Class: Unirole::API
- Inherits:
-
Object
- Object
- Unirole::API
- Defined in:
- lib/unirole.rb
Instance Attribute Summary collapse
-
#api_key ⇒ Object
Returns the value of attribute api_key.
-
#api_secret ⇒ Object
Returns the value of attribute api_secret.
-
#nonce_v ⇒ Object
Returns the value of attribute nonce_v.
-
#site_url ⇒ Object
Returns the value of attribute site_url.
-
#username ⇒ Object
Returns the value of attribute username.
Instance Method Summary collapse
- #api_call(method, param = {}, priv = false, action = '', method_type = 'post', is_json = true) ⇒ Object
- #check?(sso_id) ⇒ Boolean
- #get(url, param) ⇒ Object
- #google_auth(sso_id, code) ⇒ Object
-
#initialize(username, api_key, api_secret, site_url = "https://account.bitmain.com") ⇒ API
constructor
A new instance of API.
- #nonce ⇒ Object
- #post(url, param) ⇒ Object
- #send_sms_code(sso_id) ⇒ Object
- #signature ⇒ Object
- #sms_auth(sso_id, code) ⇒ Object
Constructor Details
#initialize(username, api_key, api_secret, site_url = "https://account.bitmain.com") ⇒ API
Returns a new instance of API.
16 17 18 19 20 21 |
# File 'lib/unirole.rb', line 16 def initialize(username, api_key, api_secret, site_url="https://account.bitmain.com") self.username = username self.api_key = api_key self.api_secret = api_secret self.site_url = site_url end |
Instance Attribute Details
#api_key ⇒ Object
Returns the value of attribute api_key.
14 15 16 |
# File 'lib/unirole.rb', line 14 def api_key @api_key end |
#api_secret ⇒ Object
Returns the value of attribute api_secret.
14 15 16 |
# File 'lib/unirole.rb', line 14 def api_secret @api_secret end |
#nonce_v ⇒ Object
Returns the value of attribute nonce_v.
14 15 16 |
# File 'lib/unirole.rb', line 14 def nonce_v @nonce_v end |
#site_url ⇒ Object
Returns the value of attribute site_url.
14 15 16 |
# File 'lib/unirole.rb', line 14 def site_url @site_url end |
#username ⇒ Object
Returns the value of attribute username.
14 15 16 |
# File 'lib/unirole.rb', line 14 def username @username end |
Instance Method Details
#api_call(method, param = {}, priv = false, action = '', method_type = 'post', is_json = true) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/unirole.rb', line 23 def api_call(method, param = {}, priv = false, action = '', method_type='post', is_json = true) url = "#{self.site_url}/api/v1/#{ method }/#{ action }" if priv self.nonce param.merge!(:access_key => self.api_key, :signature => self.signature.to_s, :nonce => self.nonce_v) end answer = self.send(method_type.to_sym, url, param) # unfortunately, the API does not always respond with JSON, so we must only # parse as JSON if is_json is true. if is_json JSON.parse(answer) else answer end end |
#check?(sso_id) ⇒ Boolean
45 46 47 |
# File 'lib/unirole.rb', line 45 def check? sso_id self.api_call 'two_auths', {sso_id: sso_id}, true, "check" end |
#get(url, param) ⇒ Object
66 67 68 |
# File 'lib/unirole.rb', line 66 def get url, param url_path = url + "?#{param.map{|k,v| "#{k}=#{v}"}.join("&")}" end |
#google_auth(sso_id, code) ⇒ Object
41 42 43 |
# File 'lib/unirole.rb', line 41 def google_auth sso_id, code self.api_call 'two_auths', {sso_id: sso_id, code: code}, true, 'google' end |
#nonce ⇒ Object
57 58 59 |
# File 'lib/unirole.rb', line 57 def nonce self.nonce_v = (Time.now.to_f * 1000000).to_i.to_s end |
#post(url, param) ⇒ Object
70 71 72 73 74 75 76 |
# File 'lib/unirole.rb', line 70 def post(url, param) begin RestClient.post(url, param) rescue Exception => e {code: 500, mgs: e.to_s}.to_json end end |
#send_sms_code(sso_id) ⇒ Object
49 50 51 |
# File 'lib/unirole.rb', line 49 def send_sms_code sso_id self.api_call('two_auths', {sso_id: sso_id}, true, "send_sms") end |
#signature ⇒ Object
61 62 63 64 |
# File 'lib/unirole.rb', line 61 def signature str = self.nonce_v + self.username + self.api_key OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), self.api_secret, str) end |
#sms_auth(sso_id, code) ⇒ Object
53 54 55 |
# File 'lib/unirole.rb', line 53 def sms_auth sso_id, code self.api_call 'two_auths', {sso_id: sso_id, code: code}, true, 'sms' end |