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.
- #communicator ⇒ HaveAPI::Client::Communicator
- #compatible? ⇒ Boolean
-
#initialize(url, opts = {}) ⇒ Client
constructor
Create an instance of client.
- #inspect ⇒ 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.
-
#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.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/haveapi/client/client.rb', line 19 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) @api.identity = @opts[:identity] end 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.
95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/haveapi/client/client.rb', line 95 def method_missing(symbol, *args) return super(symbol, *args) if @setup setup_api if @resources.include?(symbol) method(symbol).call(*args) else super(symbol, *args) end end |
Instance Attribute Details
#resources ⇒ Object (readonly)
Returns the value of attribute resources.
5 6 7 |
# File 'lib/haveapi/client/client.rb', line 5 def resources @resources end |
Instance Method Details
#auth ⇒ HaveAPI::Client::Authentication::Base?
Get uthentication provider
63 64 65 |
# File 'lib/haveapi/client/client.rb', line 63 def auth @api.auth end |
#authenticate(auth_method, **options, &block) ⇒ Object
See Communicator#authenticate.
56 57 58 |
# File 'lib/haveapi/client/client.rb', line 56 def authenticate(auth_method, **, &block) @api.authenticate(auth_method, , &block) end |
#blocking? ⇒ Boolean
return [Boolean] true if global blocking mode is enabled
73 74 75 |
# File 'lib/haveapi/client/client.rb', line 73 def blocking? @opts[:block] end |
#communicator ⇒ HaveAPI::Client::Communicator
89 90 91 |
# File 'lib/haveapi/client/client.rb', line 89 def communicator @api end |
#compatible? ⇒ Boolean
68 69 70 |
# File 'lib/haveapi/client/client.rb', line 68 def compatible? @api.compatible? end |
#inspect ⇒ Object
35 36 37 |
# File 'lib/haveapi/client/client.rb', line 35 def inspect "#<#{self.class.name} url=#{@api.url} version=#{@opts[:version]}>" end |
#opts(*keys) ⇒ Hash
Returns client options.
84 85 86 |
# File 'lib/haveapi/client/client.rb', line 84 def opts(*keys) keys.empty? ? @opts.clone : @opts.select { |k, _| keys.include?(k) } end |
#set_opts(opts) ⇒ Object
Override selected client options
79 80 81 |
# File 'lib/haveapi/client/client.rb', line 79 def set_opts(opts) @opts.update(opts) end |
#setup(v = :_nil) ⇒ Object
Get the description from the API now.
40 41 42 43 |
# File 'lib/haveapi/client/client.rb', line 40 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
}
51 52 53 |
# File 'lib/haveapi/client/client.rb', line 51 def versions @api.available_versions end |