Class: Authy::API

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

Overview

Authy.api_key = ‘foo’

Authy.api_uri = 'http://test-authy-api.heroku.com/'

Constant Summary collapse

USER_AGENT =
"authy-ruby"

Class Method Summary collapse

Class Method Details

.delete_user(params) ⇒ Object

options: :id user id



67
68
69
70
71
72
73
74
# File 'lib/authy/api.rb', line 67

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

  url = "#{Authy.api_uri}/protected/json/users/delete/#{escape_for_url(user_id)}"
  response = http_client.post(url, {:api_key => Authy.api_key}.merge(params))

  Authy::Response.new(response)
end

.escape_for_url(field) ⇒ Object



77
78
79
# File 'lib/authy/api.rb', line 77

def self.escape_for_url(field)
  URI.escape(field.to_s.strip, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
end

.escape_query(query, namespace = nil) ⇒ Object

Copied and extended from httpclient’s HTTP::Message#escape_query()



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/authy/api.rb', line 82

def self.escape_query(query, namespace = nil) # :nodoc:
  pairs = []
  query.each { |attr, value|
    left = namespace ? "#{namespace}[#{attr.to_s}]" : attr.to_s
    if values = Array.try_convert(value)
      values.each { |value|
        if value.respond_to?(:read)
          value = value.read
        end

        if value.kind_of?(Hash)
          pairs.push(escape_query(value, left+"[]"))
        else
          pairs.push(HTTP::Message.escape(left+ '[]') << '=' << HTTP::Message.escape(value.to_s))
        end
      }
    elsif values = Hash.try_convert(value)
      pairs.push(escape_query(values, left.dup))
    else
      if value.respond_to?(:read)
        value = value.read
      end
      pairs.push(HTTP::Message.escape(left) << '=' << HTTP::Message.escape(value.to_s))
    end
  }
  pairs.join('&')
end

.register_user(attributes) ⇒ Object



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

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

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

  Authy::User.new(response)
end

.request_phone_call(params) ⇒ Object

options: :id user id :force force phone_call



56
57
58
59
60
61
62
63
# File 'lib/authy/api.rb', line 56

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

  url = "#{Authy.api_uri}/protected/json/call/#{escape_for_url(user_id)}"
  response = http_client.get(url, {:api_key => Authy.api_key}.merge(params))

  Authy::Response.new(response)
end

.request_sms(params) ⇒ Object

options: :id user id :force force sms



44
45
46
47
48
49
50
51
# File 'lib/authy/api.rb', line 44

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

  url = "#{Authy.api_uri}/protected/json/sms/#{escape_for_url(user_id)}"
  response = http_client.get(url, {:api_key => Authy.api_key}.merge(params))

  Authy::Response.new(response)
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



30
31
32
33
34
35
36
37
38
39
# File 'lib/authy/api.rb', line 30

def self.verify(params)
  token = params.delete(:token) || params.delete('token')
  user_id = params.delete(:id) || params.delete('id')
  params[:force] = true if params[:force].nil? && params['force'].nil?

  url = "#{Authy.api_uri}/protected/json/verify/#{escape_for_url(token)}/#{escape_for_url(user_id)}"
  response = http_client.get(url, {:api_key => Authy.api_key}.merge(params))

  Authy::Response.new(response)
end