Class: Rerout::Client
- Inherits:
-
Object
- Object
- Rerout::Client
- Defined in:
- lib/rerout/client.rb
Overview
Main entry point — construct one of these per project API key and re-use it across requests. Thread-safe so long as the injected Faraday connection is thread-safe (Faraday’s default ‘Net::HTTP` adapter is).
Instance Attribute Summary collapse
-
#base_url ⇒ String
readonly
Resolved base URL with trailing slashes stripped.
-
#conversions ⇒ Resources::Conversions
readonly
Conversion tracking namespace.
-
#links ⇒ Resources::Links
readonly
Link namespace.
-
#project ⇒ Resources::Project
readonly
Project namespace.
-
#qr ⇒ Resources::Qr
readonly
QR namespace.
-
#tags ⇒ Resources::Tags
readonly
Tag management namespace.
-
#webhooks ⇒ Resources::Webhooks
readonly
Webhook endpoint management namespace.
Instance Method Summary collapse
-
#initialize(api_key:, base_url: nil, connection: nil, timeout: 30, user_agent: nil) ⇒ Client
constructor
A new instance of Client.
-
#request(method:, path:, query: nil, body: nil, raw: false) ⇒ Hash, ...
private
Perform a JSON request against the Rerout API.
Constructor Details
#initialize(api_key:, base_url: nil, connection: nil, timeout: 30, user_agent: nil) ⇒ Client
Returns a new instance of Client.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/rerout/client.rb', line 59 def initialize(api_key:, base_url: nil, connection: nil, timeout: 30, user_agent: nil) if api_key.nil? || !api_key.is_a?(String) || api_key.strip.empty? raise Error.new( code: 'missing_api_key', message: 'A project API key is required to construct Rerout::Client.', status: 0 ) end @api_key = api_key @base_url = (base_url || DEFAULT_BASE_URL).to_s.sub(%r{/+\z}, '') @timeout = timeout @user_agent = user_agent || "rerout-ruby/#{Rerout::VERSION}" @connection = connection || default_connection @links = Resources::Links.new(self) @project = Resources::Project.new(self) @qr = Resources::Qr.new(self) @webhooks = Resources::Webhooks.new(self) @conversions = Resources::Conversions.new(self) @tags = Resources::Tags.new(self) end |
Instance Attribute Details
#base_url ⇒ String (readonly)
Returns resolved base URL with trailing slashes stripped.
38 39 40 |
# File 'lib/rerout/client.rb', line 38 def base_url @base_url end |
#conversions ⇒ Resources::Conversions (readonly)
Returns conversion tracking namespace.
49 50 51 |
# File 'lib/rerout/client.rb', line 49 def conversions @conversions end |
#links ⇒ Resources::Links (readonly)
Returns link namespace.
41 42 43 |
# File 'lib/rerout/client.rb', line 41 def links @links end |
#project ⇒ Resources::Project (readonly)
Returns project namespace.
43 44 45 |
# File 'lib/rerout/client.rb', line 43 def project @project end |
#qr ⇒ Resources::Qr (readonly)
Returns QR namespace.
45 46 47 |
# File 'lib/rerout/client.rb', line 45 def qr @qr end |
#tags ⇒ Resources::Tags (readonly)
Returns tag management namespace.
51 52 53 |
# File 'lib/rerout/client.rb', line 51 def @tags end |
#webhooks ⇒ Resources::Webhooks (readonly)
Returns webhook endpoint management namespace.
47 48 49 |
# File 'lib/rerout/client.rb', line 47 def webhooks @webhooks end |
Instance Method Details
#request(method:, path:, query: nil, body: nil, raw: false) ⇒ Hash, ...
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Perform a JSON request against the Rerout API.
92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/rerout/client.rb', line 92 def request(method:, path:, query: nil, body: nil, raw: false) headers = base_headers payload = nil if body payload = JSON.generate(body) headers['Content-Type'] = 'application/json' end response = perform_request(method: method, path: path, query: query, headers: headers, payload: payload) handle_response(response, raw: raw) end |