Class: Licensario::API
- Inherits:
-
Object
- Object
- Licensario::API
- Defined in:
- lib/licensario/api.rb
Instance Attribute Summary collapse
-
#base_url ⇒ Object
readonly
Returns the value of attribute base_url.
-
#key ⇒ Object
readonly
Returns the value of attribute key.
-
#secret ⇒ Object
readonly
Returns the value of attribute secret.
Instance Method Summary collapse
-
#can_increment_resource?(user_id, external_user_id, resource_id, amount) ⇒ Boolean
Checks if Resource can be incremented.
-
#can_set_resource?(user_id, external_user_id, resource_id, amount) ⇒ Boolean
Checks if Resource can be setted.
-
#check_server_status ⇒ Object
Checks the API Server Status - TODO.
-
#do_request(method, resource, params = {}) ⇒ Object
Executes the actual request with the API server and processes the response.
-
#ensure_external_user_exists(external_user_id, email) ⇒ Object
Ensures the existence of an external user.
-
#get_external_user(user_id, user_email) ⇒ Object
Gets an External User.
-
#initialize(key, secret, base_url = 'users.licensario.com', use_ssl = true) ⇒ API
constructor
A new instance of API.
-
#request_url(url) ⇒ Object
Forms the appropriate request URL.
-
#resource_available?(user_id, external_user_id, resource_id, amount, operation) ⇒ Boolean
Checks the Resource Availability.
Constructor Details
#initialize(key, secret, base_url = 'users.licensario.com', use_ssl = true) ⇒ API
Returns a new instance of API.
8 9 10 |
# File 'lib/licensario/api.rb', line 8 def initialize(key, secret, base_url = 'users.licensario.com', use_ssl = true) @key, @secret, @base_url, @use_ssl = key, secret, base_url, use_ssl end |
Instance Attribute Details
#base_url ⇒ Object (readonly)
Returns the value of attribute base_url.
6 7 8 |
# File 'lib/licensario/api.rb', line 6 def base_url @base_url end |
#key ⇒ Object (readonly)
Returns the value of attribute key.
6 7 8 |
# File 'lib/licensario/api.rb', line 6 def key @key end |
#secret ⇒ Object (readonly)
Returns the value of attribute secret.
6 7 8 |
# File 'lib/licensario/api.rb', line 6 def secret @secret end |
Instance Method Details
#can_increment_resource?(user_id, external_user_id, resource_id, amount) ⇒ Boolean
Checks if Resource can be incremented
80 81 82 83 |
# File 'lib/licensario/api.rb', line 80 def can_increment_resource?(user_id, external_user_id, resource_id, amount) res = resource_available?(user_id, external_user_id, resource_id, amount, "increment") return (res[:body] =~ /yes/ or res[:body] =~ /true/) != nil end |
#can_set_resource?(user_id, external_user_id, resource_id, amount) ⇒ Boolean
Checks if Resource can be setted
86 87 88 89 |
# File 'lib/licensario/api.rb', line 86 def can_set_resource?(user_id, external_user_id, resource_id, amount) res = resource_available?(user_id, external_user_id, resource_id, amount, "set") return (res[:body] =~ /yes/ or res[:body] =~ /true/) != nil end |
#check_server_status ⇒ Object
Checks the API Server Status - TODO
50 51 52 53 |
# File 'lib/licensario/api.rb', line 50 def check_server_status status = do_request(:get, '/status') return 'OK' end |
#do_request(method, resource, params = {}) ⇒ Object
Executes the actual request with the API server and processes the response
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/licensario/api.rb', line 18 def do_request(method, resource, params = {}) begin uri = URI.parse(request_url(resource)) uri.query = URI.encode_www_form(params) if !params.empty? and method == :get puts "#{method} - #{uri.request_uri}" http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = @use_ssl http.verify_mode = OpenSSL::SSL::VERIFY_NONE if @use_ssl case method when :post req_class = Net::HTTP::Post when :get req_class = Net::HTTP::Get when :put req_class = Net::HTTP::Put when :delete req_class = Net::HTTP::Delete end request = req_class.new(uri.request_uri) request.content_type = "application/x-www-form-urlencoded" request['ISV_API_KEY'] = @key request['ISV_API_SECRET'] = @secret request['LCNS_DISABLE_SIGN'] = 'true' request.set_form_data(params) if !params.empty? and [:post,:put].include?(method) response = http.request(request) return { body: response.body, status: response.code.to_i } rescue return { body: nil, status: nil } end end |
#ensure_external_user_exists(external_user_id, email) ⇒ Object
Ensures the existence of an external user
65 66 67 |
# File 'lib/licensario/api.rb', line 65 def ensure_external_user_exists(external_user_id, email) do_request(:put, "/api/v1/users/external/#{external_user_id}", { email: email }) end |
#get_external_user(user_id, user_email) ⇒ Object
Gets an External User
56 57 58 59 60 61 62 |
# File 'lib/licensario/api.rb', line 56 def get_external_user(user_id, user_email) res = ensure_external_user_exists(user_id, user_email) params = res[:body] user = Licensario::User.new(params) user.api = self return user end |
#request_url(url) ⇒ Object
Forms the appropriate request URL
13 14 15 |
# File 'lib/licensario/api.rb', line 13 def request_url(url) (@use_ssl ? 'https' : 'http') + '://' + @base_url + url end |
#resource_available?(user_id, external_user_id, resource_id, amount, operation) ⇒ Boolean
Checks the Resource Availability
70 71 72 73 74 75 76 77 |
# File 'lib/licensario/api.rb', line 70 def resource_available?(user_id, external_user_id, resource_id, amount, operation) url = "/api/userresources/available?userId=" + user_id url += "&externalUserId=" + external_user_id url += "&resourceId=" + resource_id url += "&amount=" + amount url += "&operation=" + operation do_request(:get, url) end |