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(*args, &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.
-
#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.
91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/haveapi/client/client.rb', line 91 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
59 60 61 |
# File 'lib/haveapi/client/client.rb', line 59 def auth @api.auth end |
#authenticate(*args, &block) ⇒ Object
See Communicator#authenticate.
52 53 54 |
# File 'lib/haveapi/client/client.rb', line 52 def authenticate(*args, &block) @api.authenticate(*args, &block) end |
#blocking? ⇒ Boolean
return [Boolean] true if global blocking mode is enabled
69 70 71 |
# File 'lib/haveapi/client/client.rb', line 69 def blocking? @opts[:block] end |
#communicator ⇒ HaveAPI::Client::Communicator
85 86 87 |
# File 'lib/haveapi/client/client.rb', line 85 def communicator @api end |
#compatible? ⇒ Boolean
64 65 66 |
# File 'lib/haveapi/client/client.rb', line 64 def compatible? @api.compatible? end |
#opts(*keys) ⇒ Hash
Returns client options.
80 81 82 |
# File 'lib/haveapi/client/client.rb', line 80 def opts(*keys) keys.empty? ? @opts.clone : @opts.select { |k, _| keys.include?(k) } end |
#set_opts(opts) ⇒ Object
Override selected client options
75 76 77 |
# File 'lib/haveapi/client/client.rb', line 75 def set_opts(opts) @opts.update(opts) end |
#setup(v = :_nil) ⇒ Object
Get the description from the API now.
36 37 38 39 |
# File 'lib/haveapi/client/client.rb', line 36 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
}
47 48 49 |
# File 'lib/haveapi/client/client.rb', line 47 def versions @api.available_versions end |