Class: OAuthProvider::Backends::Mysql
- Defined in:
- lib/oauth_provider/backends/mysql.rb
Instance Method Summary collapse
- #clear! ⇒ Object
- #consumers ⇒ Object
- #create_consumer(consumer) ⇒ Object
- #create_user_access(token) ⇒ Object
- #create_user_request(token) ⇒ Object
- #destroy_consumer(consumer) ⇒ Object
- #destroy_user_request(user_request) ⇒ Object
- #find_consumer(shared_key) ⇒ Object
- #find_user_access(shared_key) ⇒ Object
- #find_user_request(shared_key) ⇒ Object
-
#initialize(host, user, password, db, port = nil) ⇒ Mysql
constructor
A new instance of Mysql.
- #save_user_request(user_request) ⇒ Object
Methods inherited from Abstract
#add_consumer, #add_user_access, #add_user_request, #destroy_user_access, #provider, #save_consumer
Constructor Details
#initialize(host, user, password, db, port = nil) ⇒ Mysql
Returns a new instance of Mysql.
11 12 13 14 15 16 17 18 19 |
# File 'lib/oauth_provider/backends/mysql.rb', line 11 def initialize(host, user, password, db, port=nil) @db = ::Mysql::real_connect(host, user, password, db, port) @db.reconnect = true @db.real_query("SET NAMES 'UTF8'") # FIXME: The key column widths are perhaps not right. What is the max width of each? @db.real_query("CREATE TABLE IF NOT EXISTS consumers (name CHAR(50), shared_key CHAR(43) PRIMARY KEY, secret_key CHAR(43), callback CHAR(255))") @db.real_query("CREATE TABLE IF NOT EXISTS request_tokens (shared_key CHAR(22) PRIMARY KEY, secret_key CHAR(43), authorized INT, consumer_shared_key CHAR(43))") @db.real_query("CREATE TABLE IF NOT EXISTS access_tokens (shared_key CHAR(22) PRIMARY KEY, secret_key CHAR(43), request_shared_key CHAR(43), consumer_shared_key CHAR(43))") end |
Instance Method Details
#clear! ⇒ Object
21 22 23 24 25 |
# File 'lib/oauth_provider/backends/mysql.rb', line 21 def clear! @db.real_query("DROP TABLE IF EXISTS consumers") @db.real_query("DROP TABLE IF EXISTS request_tokens") @db.real_query("DROP TABLE IF EXISTS access_tokens") end |
#consumers ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/oauth_provider/backends/mysql.rb', line 44 def consumers rtrn = [] @db.query("SELECT name, callback, shared_key, secret_key FROM consumers").each do |row| rtrn << OAuthProvider::Consumer.new(self, @provider, row[1], OAuthProvider::Token.new(row[2], row[3])) end rtrn end |
#create_consumer(consumer) ⇒ Object
27 28 29 30 31 32 33 34 35 |
# File 'lib/oauth_provider/backends/mysql.rb', line 27 def create_consumer(consumer) # XXX: Should come up with a better way to store names than forcing the gem user to hack it in manually. # Also, OAuthProvider::DuplicateCallback is a bit silly... multiple consumers with the same callback may be useful (especially since callbacks are optional. @db.query("SELECT callback FROM consumers WHERE callback='#{consumer.callback}' LIMIT 1").each do raise OAuthProvider::DuplicateCallback.new(consumer) end @db.real_query("INSERT INTO consumers (name, shared_key, secret_key, callback) " \ "VALUES ('', '#{consumer.shared_key}', '#{consumer.secret_key}', '#{consumer.callback}')") end |
#create_user_access(token) ⇒ Object
77 78 79 80 |
# File 'lib/oauth_provider/backends/mysql.rb', line 77 def create_user_access(token) @db.real_query("INSERT INTO access_tokens (shared_key, secret_key, consumer_shared_key, request_shared_key) " \ "VALUES ('#{token.shared_key}','#{token.secret_key}','#{token.consumer.shared_key}', '#{token.request_shared_key}')") end |
#create_user_request(token) ⇒ Object
56 57 58 59 |
# File 'lib/oauth_provider/backends/mysql.rb', line 56 def create_user_request(token) @db.real_query("INSERT INTO request_tokens (shared_key, secret_key, authorized, consumer_shared_key) " \ "VALUES ('#{token.shared_key}','#{token.secret_key}',#{token. ? 1 : 0},'#{token.consumer.shared_key}')") end |
#destroy_consumer(consumer) ⇒ Object
52 53 54 |
# File 'lib/oauth_provider/backends/mysql.rb', line 52 def destroy_consumer(consumer) @db.real_query("DELETE FROM consumers WHERE shared_key='#{consumer.shared_key}' AND secret_key='#{consumer.secret_key}'") end |
#destroy_user_request(user_request) ⇒ Object
73 74 75 |
# File 'lib/oauth_provider/backends/mysql.rb', line 73 def destroy_user_request(user_request) @db.real_query("DELETE FROM request_tokens WHERE shared_key='#{user_request.shared_key}' AND secret_key='#{user_request.secret_key}'") end |
#find_consumer(shared_key) ⇒ Object
37 38 39 40 41 42 |
# File 'lib/oauth_provider/backends/mysql.rb', line 37 def find_consumer(shared_key) @db.query("SELECT name, callback, shared_key, secret_key FROM consumers WHERE shared_key='#{shared_key}' LIMIT 1").each do |row| return OAuthProvider::Consumer.new(self, @provider, row[1], OAuthProvider::Token.new(row[2], row[3])) end nil end |
#find_user_access(shared_key) ⇒ Object
82 83 84 85 86 87 |
# File 'lib/oauth_provider/backends/mysql.rb', line 82 def find_user_access(shared_key) @db.query("SELECT shared_key, secret_key, request_shared_key, consumer_shared_key FROM access_tokens WHERE shared_key = '#{shared_key}' LIMIT 1").each do |row| return OAuthProvider::UserAccess.new(self, self.find_consumer(row[3]), row[2], OAuthProvider::Token.new(row[0], row[1])) end nil end |
#find_user_request(shared_key) ⇒ Object
61 62 63 64 65 66 67 |
# File 'lib/oauth_provider/backends/mysql.rb', line 61 def find_user_request(shared_key) @db.query("SELECT shared_key, secret_key, authorized, consumer_shared_key FROM request_tokens WHERE shared_key = '#{shared_key}' LIMIT 1").each do |row| return OAuthProvider::UserRequest.new(self, self.find_consumer(row[3]), row[2].to_i!=0, OAuthProvider::Token.new(row[0], row[1])) end raise OAuthProvider::UserRequestNotFound.new(shared_key) nil end |
#save_user_request(user_request) ⇒ Object
69 70 71 |
# File 'lib/oauth_provider/backends/mysql.rb', line 69 def save_user_request(user_request) @db.real_query("UPDATE request_tokens SET authorized=#{user_request. ? '1' : '0'} WHERE shared_key='#{user_request.shared_key}' AND secret_key='#{user_request.secret_key}'") end |