Class: AddonsApi::Client::Wrapper
- Inherits:
-
Object
- Object
- AddonsApi::Client::Wrapper
- Defined in:
- lib/addons-api/client.rb
Overview
Addons.io API wrapper
Constant Summary collapse
- BASE_URL =
%(https://api.addons.io/).freeze
- API_VERSION =
%(2022-12-01).freeze
- HEADERS =
{ 'X-Addons-Api-Version' => API_VERSION, 'Accept' => 'application/json', 'Content-Type' => 'application/json', 'User-Agent' => "addons-api/#{AddonsApi::VERSION}" }.freeze
- OPTIONS =
{ :auto_paginate => true, :headers => {}, :logger => Logger.new(STDERR), :timeout => 10 # seconds }.freeze
Instance Method Summary collapse
-
#addon_service ⇒ Object
AddonService resource.
-
#initialize(options = {}) ⇒ Wrapper
constructor
A new instance of Wrapper.
-
#oauth ⇒ Object
OAuth resource.
- #request(method, path, body: {}, query: {}, base_url: nil) ⇒ Object
-
#team ⇒ Object
Team resource.
Constructor Details
#initialize(options = {}) ⇒ Wrapper
55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/addons-api/client.rb', line 55 def initialize(={}) = OPTIONS.merge() @token = .delete(:token) @base_url = .delete(:base_url) || BASE_URL [:headers] = HEADERS if @token [:headers] = [:headers].merge({ 'Authorization' => "Bearer #{@token}", }).merge([:headers]) end end |
Instance Method Details
#addon_service ⇒ Object
AddonService resource
104 105 106 |
# File 'lib/addons-api/client.rb', line 104 def addon_service @addon_service_resource ||= AddonService.new(self) end |
#oauth ⇒ Object
OAuth resource
99 100 101 |
# File 'lib/addons-api/client.rb', line 99 def oauth @oauth_resource ||= OAuth.new(self) end |
#request(method, path, body: {}, query: {}, base_url: nil) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/addons-api/client.rb', line 69 def request(method, path, body: {}, query: {}, base_url: nil) base_url = base_url || @base_url url = "#{base_url.chomp('/')}/#{path}" query_string = URI.encode_www_form(query) unless query_string.empty? if url.include?('?') url = url + '&' + query_string else url = url + '?' + query_string end end # TODO: How do we paginate these requests?? result = RestClient::Request.execute( method: method, url: url, params: query, payload: Oj.dump(body, mode: :compat), headers: [:headers], timeout: [:timeout], log: [:logger] ) Oj.load(result.body, symbol_keys: true) rescue RestClient::BadRequest => e raise end |
#team ⇒ Object
Team resource
109 110 111 |
# File 'lib/addons-api/client.rb', line 109 def team @team_resource ||= Team.new(self) end |