Class: HaveAPI::Client::Client
- Inherits:
-
Object
- Object
- HaveAPI::Client::Client
- Defined in:
- lib/haveapi/client/client.rb
Overview
HaveAPI client interface.
Instance Attribute Summary collapse
-
#resources ⇒ Object
readonly
Returns the value of attribute resources.
Instance Method Summary collapse
-
#auth ⇒ HaveAPI::Client::Authentication::Base?
Get uthentication provider.
-
#authenticate(auth_method, **options, &block) ⇒ Object
See Communicator#authenticate.
-
#blocking? ⇒ Boolean
return [Boolean] true if global blocking mode is enabled.
- #client_message(key, **values) ⇒ Object
- #communicator ⇒ HaveAPI::Client::Communicator
- #compatible? ⇒ Boolean
-
#initialize(url, opts = {}) ⇒ Client
constructor
Create an instance of client.
- #inspect ⇒ Object
- #language ⇒ Object
- #language=(value) ⇒ Object
- #language_header ⇒ Object
- #language_header=(value) ⇒ Object
-
#method_missing(symbol, *args) ⇒ Object
Initialize the client if it is not yet initialized and call the resource if it exists.
-
#opts(*keys) ⇒ Hash
Client options.
- #respond_to_missing?(symbol, *_) ⇒ Boolean
-
#set_opts(opts) ⇒ Object
Override selected client options.
-
#setup(v = :_nil) ⇒ Object
Get the description from the API now.
-
#versions ⇒ Object
Returns a list of API versions.
Constructor Details
#initialize(url, opts = {}) ⇒ Client
Create an instance of client.
The client by default uses the default version of the API.
API is asked for description only when needed or by calling #setup.
identity is sent in each request to the API in User-Agent header.
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 |
# File 'lib/haveapi/client/client.rb', line 20 def initialize(url, opts = {}) @setup = false @opts = opts @version = @opts[:version] @opts[:identity] ||= 'haveapi-client' @opts[:block] = true if @opts[:block].nil? if @opts[:communicator] @api = @opts[:communicator] else @api = HaveAPI::Client::Communicator.new( url, @version, **{ verify_ssl: opts[:verify_ssl], language: opts[:language], language_header: opts[:language_header] }.compact ) @api.identity = @opts[:identity] end @api.language = @opts[:language] if @opts.has_key?(:language) @api.language_header = @opts[:language_header] if @opts.has_key?(:language_header) end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(symbol, *args) ⇒ Object
Initialize the client if it is not yet initialized and call the resource if it exists.
134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/haveapi/client/client.rb', line 134 def method_missing(symbol, *args) return super if @setup setup_api if @resource_methods.include?(symbol) method(symbol).call(*args) else super end end |
Instance Attribute Details
#resources ⇒ Object (readonly)
Returns the value of attribute resources.
3 4 5 |
# File 'lib/haveapi/client/client.rb', line 3 def resources @resources end |
Instance Method Details
#auth ⇒ HaveAPI::Client::Authentication::Base?
Get uthentication provider
75 76 77 |
# File 'lib/haveapi/client/client.rb', line 75 def auth @api.auth end |
#authenticate(auth_method, **options, &block) ⇒ Object
See Communicator#authenticate.
68 69 70 |
# File 'lib/haveapi/client/client.rb', line 68 def authenticate(auth_method, **, &block) @api.authenticate(auth_method, , &block) end |
#blocking? ⇒ Boolean
return [Boolean] true if global blocking mode is enabled
85 86 87 |
# File 'lib/haveapi/client/client.rb', line 85 def blocking? @opts[:block] end |
#client_message(key, **values) ⇒ Object
113 114 115 116 117 118 119 120 |
# File 'lib/haveapi/client/client.rb', line 113 def (key, **values) if @api.respond_to?(:client_message) @api.(key, **values) else lang = @api.language if @api.respond_to?(:language) HaveAPI::Client::I18n.t(lang || @opts[:language], key, values) end end |
#communicator ⇒ HaveAPI::Client::Communicator
128 129 130 |
# File 'lib/haveapi/client/client.rb', line 128 def communicator @api end |
#compatible? ⇒ Boolean
80 81 82 |
# File 'lib/haveapi/client/client.rb', line 80 def compatible? @api.compatible? end |
#inspect ⇒ Object
47 48 49 |
# File 'lib/haveapi/client/client.rb', line 47 def inspect "#<#{self.class.name} url=#{@api.url} version=#{@opts[:version]}>" end |
#language ⇒ Object
97 98 99 |
# File 'lib/haveapi/client/client.rb', line 97 def language @api.language end |
#language=(value) ⇒ Object
101 102 103 |
# File 'lib/haveapi/client/client.rb', line 101 def language=(value) @api.language = value end |
#language_header ⇒ Object
105 106 107 |
# File 'lib/haveapi/client/client.rb', line 105 def language_header @api.language_header end |
#language_header=(value) ⇒ Object
109 110 111 |
# File 'lib/haveapi/client/client.rb', line 109 def language_header=(value) @api.language_header = value end |
#opts(*keys) ⇒ Hash
Returns client options.
123 124 125 |
# File 'lib/haveapi/client/client.rb', line 123 def opts(*keys) keys.empty? ? @opts.clone : @opts.slice(*keys) end |
#respond_to_missing?(symbol, *_) ⇒ Boolean
147 148 149 150 151 152 |
# File 'lib/haveapi/client/client.rb', line 147 def respond_to_missing?(symbol, *_) return super if @setup setup_api @resource_methods.include?(symbol) end |
#set_opts(opts) ⇒ Object
Override selected client options
91 92 93 94 95 |
# File 'lib/haveapi/client/client.rb', line 91 def set_opts(opts) @opts.update(opts) self.language = opts[:language] if opts.has_key?(:language) self.language_header = opts[:language_header] if opts.has_key?(:language_header) end |
#setup(v = :_nil) ⇒ Object
Get the description from the API now.
52 53 54 55 |
# File 'lib/haveapi/client/client.rb', line 52 def setup(v = :_nil) @version = v unless v == :_nil setup_api end |
#versions ⇒ Object
Returns a list of API versions. The return value is a hash, e.g.:
{
versions: [1, 2, 3],
default: 3
}
63 64 65 |
# File 'lib/haveapi/client/client.rb', line 63 def versions @api.available_versions end |