Class: Unirole::API

Inherits:
Object
  • Object
show all
Defined in:
lib/unirole.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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_keyObject

Returns the value of attribute api_key.



14
15
16
# File 'lib/unirole.rb', line 14

def api_key
  @api_key
end

#api_secretObject

Returns the value of attribute api_secret.



14
15
16
# File 'lib/unirole.rb', line 14

def api_secret
  @api_secret
end

#nonce_vObject

Returns the value of attribute nonce_v.



14
15
16
# File 'lib/unirole.rb', line 14

def nonce_v
  @nonce_v
end

#site_urlObject

Returns the value of attribute site_url.



14
15
16
# File 'lib/unirole.rb', line 14

def site_url
  @site_url
end

#usernameObject

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

Returns:

  • (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

#nonceObject



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

#signatureObject



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