Class: Authy::API

Inherits:
Object
  • Object
show all
Extended by:
HTTPClient::IncludeClient
Includes:
URL
Defined in:
lib/authy/api.rb

Direct Known Subclasses

OneTouch, PhoneVerification

Constant Summary collapse

MIN_TOKEN_SIZE =
6
MAX_TOKEN_SIZE =
12

Class Method Summary collapse

Methods included from URL

included

Class Method Details

.delete_user(params) ⇒ Object

options: :id user id



106
107
108
109
110
# File 'lib/authy/api.rb', line 106

def self.delete_user(params)
  user_id = params.delete(:id) || params.delete("id")

  post_request("protected/json/users/delete/:user_id", params.merge({"user_id" => user_id}))
end

.register_user(attributes) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/authy/api.rb', line 13

def self.register_user(attributes)
  api_key = attributes.delete(:api_key) || Authy.api_key
  send_install_link_via_sms = attributes.delete(:send_install_link_via_sms) { true }
  params = {
    :user => attributes,
    :send_install_link_via_sms => send_install_link_via_sms
  }

  url = "#{Authy.api_uri}/protected/json/users/new"
  response = http_client.post(url, :body => escape_query(params), :header => default_header(params: { api_key: api_key }))

  Authy::User.new(response)
end

.request_email(params) ⇒ Object

options: :id user id



89
90
91
92
93
# File 'lib/authy/api.rb', line 89

def self.request_email(params)
  user_id = params.delete(:id) || params.delete('id')

  post_request("protected/json/email/:user_id", params.merge({"user_id" => user_id}))
end

.request_phone_call(params) ⇒ Object

options: :id user id :force force phone_call



81
82
83
84
85
# File 'lib/authy/api.rb', line 81

def self.request_phone_call(params)
  user_id = params.delete(:id) || params.delete("id")

  get_request("protected/json/call/:user_id", params.merge({"user_id" => user_id}))
end

.request_qr_code(params) ⇒ Object

options: :id user id :qr_size qr size :qr_label context for qr code



63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/authy/api.rb', line 63

def self.request_qr_code(params)
  user_id = params.delete(:id) || params.delete("id")
  qr_size = params.delete(:qr_size) || params.delete("qr_size") || 300
  qr_label = params.delete(:qr_label) || params.delete("qr_label") || ""

  return invalid_response("User id is invalid") unless is_digit?(user_id)
  return invalid_response("Qr image size is invalid") unless is_digit?(qr_size)

  response = post_request("protected/json/users/:user_id/secret", params.merge({
    "user_id" => user_id,
    "qr_size" => qr_size,
    "label" => qr_label
  }))
end

.request_sms(params) ⇒ Object

options: :id user id :force force sms



53
54
55
56
57
# File 'lib/authy/api.rb', line 53

def self.request_sms(params)
  user_id = params.delete(:id) || params.delete("id")

  get_request("protected/json/sms/:user_id", params.merge({"user_id" => user_id}))
end

.update_user(params) ⇒ Object

options: :id user id :email user’s new email



98
99
100
101
102
# File 'lib/authy/api.rb', line 98

def self.update_user(params)
  user_id = params.delete(:id) || params.delete('id')

  post_request("protected/json/users/:user_id/update", params.merge({"user_id" => user_id}))
end

.user_status(params) ⇒ Object

options: :id user id



114
115
116
117
# File 'lib/authy/api.rb', line 114

def self.user_status(params)
  user_id = params.delete(:id) || params.delete("id")
  get_request("protected/json/users/:user_id/status", params.merge({"user_id" => user_id}))
end

.verify(params) ⇒ Object

options: :id user id :token authy token entered by the user :force (true|false) force to check even if the cellphone is not confirmed



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/authy/api.rb', line 32

def self.verify(params)
  token = params.delete(:token) || params.delete("token")
  user_id = params.delete(:id) || params.delete("id")

  return invalid_response("Token format is invalid") unless token_is_safe?(token)
  return invalid_response("User id is invalid") unless is_digit?(user_id)

  params[:force] = true if params[:force].nil? && params["force"].nil?

  response = get_request("protected/json/verify/:token/:user_id", params.merge({
    "token" => token,
    "user_id" => user_id
  }))

  return verify_response(response) if response.ok?
  return response
end