Class: ZendeskAPI::Client
- Inherits:
-
Object
- Object
- ZendeskAPI::Client
- Defined in:
- lib/zendesk_api/client.rb
Overview
The top-level class that handles configuration and connection to the Zendesk API. Can also be used as an accessor to resource collections.
Constant Summary collapse
- GZIP_EXCEPTIONS =
[:em_http, :httpclient]
Instance Attribute Summary collapse
-
#callbacks ⇒ Array
readonly
Custom response callbacks.
-
#config ⇒ Configuration
readonly
Config instance.
Class Method Summary collapse
-
.check_deprecated_namespace_usage(attributes, name) ⇒ Object
show a nice warning for people using the old style api.
Instance Method Summary collapse
-
#connection ⇒ Faraday::Connection
Creates a connection if there is none, otherwise returns the existing connection.
-
#current_account(reload = false) ⇒ Hash
Returns the current account.
-
#current_locale(reload = false) ⇒ ZendeskAPI::Locale
Returns the current locale.
-
#current_user(reload = false) ⇒ ZendeskAPI::User
Returns the current user (aka me).
- #initialize {|config| ... } ⇒ Client constructor
-
#insert_callback(&block) ⇒ Object
Pushes a callback onto the stack.
-
#method_missing(method, *args, &block) ⇒ Collection
Handles resources such as ‘tickets’.
- #respond_to?(method, *args) ⇒ Boolean
Constructor Details
#initialize {|config| ... } ⇒ Client
Creates a new ZendeskAPI::Client instance and yields #config.
Requires a block to be given.
Does basic configuration constraints:
-
ZendeskAPI::Configuration#url must be https unless ZendeskAPI::Configuration#allow_http is set.
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/zendesk_api/client.rb', line 82 def initialize raise ArgumentError, "block not given" unless block_given? @config = ZendeskAPI::Configuration.new yield config @callbacks = [] @resource_cache = {} check_url config.retry = !!config.retry # nil -> false set_token_auth set_default_logger add_warning_callback end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Collection
Handles resources such as ‘tickets’. Any options are passed to the underlying collection, except reload which disregards memoization and creates a new Collection instance.
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/zendesk_api/client.rb', line 37 def method_missing(method, *args, &block) method = method.to_s = args.last.is_a?(Hash) ? args.pop : {} @resource_cache[method] ||= { :class => nil, :cache => ZendeskAPI::LRUCache.new } if !.delete(:reload) && (cached = @resource_cache[method][:cache].read(.hash)) cached else @resource_cache[method][:class] ||= method_as_class(method) raise "Resource for #{method} does not exist" unless @resource_cache[method][:class] @resource_cache[method][:cache].write(.hash, ZendeskAPI::Collection.new(self, @resource_cache[method][:class], )) end end |
Instance Attribute Details
#callbacks ⇒ Array (readonly)
Returns Custom response callbacks.
32 33 34 |
# File 'lib/zendesk_api/client.rb', line 32 def callbacks @callbacks end |
#config ⇒ Configuration (readonly)
Returns Config instance.
30 31 32 |
# File 'lib/zendesk_api/client.rb', line 30 def config @config end |
Class Method Details
.check_deprecated_namespace_usage(attributes, name) ⇒ Object
show a nice warning for people using the old style api
116 117 118 119 120 |
# File 'lib/zendesk_api/client.rb', line 116 def self.check_deprecated_namespace_usage(attributes, name) if attributes[name].is_a?(Hash) raise "un-nest '#{name}' from the attributes" end end |
Instance Method Details
#connection ⇒ Faraday::Connection
Creates a connection if there is none, otherwise returns the existing connection.
104 105 106 107 |
# File 'lib/zendesk_api/client.rb', line 104 def connection @connection ||= build_connection return @connection end |
#current_account(reload = false) ⇒ Hash
Returns the current account
64 65 66 67 |
# File 'lib/zendesk_api/client.rb', line 64 def current_account(reload = false) return @current_account if @current_account && !reload @current_account = Hashie::Mash.new(connection.get('account/resolve').body) end |
#current_locale(reload = false) ⇒ ZendeskAPI::Locale
Returns the current locale
71 72 73 74 |
# File 'lib/zendesk_api/client.rb', line 71 def current_locale(reload = false) return @locale if @locale && !reload @locale = locales.find(:id => 'current') end |
#current_user(reload = false) ⇒ ZendeskAPI::User
Returns the current user (aka me)
57 58 59 60 |
# File 'lib/zendesk_api/client.rb', line 57 def current_user(reload = false) return @current_user if @current_user && !reload @current_user = users.find(:id => 'me') end |
#insert_callback(&block) ⇒ Object
Pushes a callback onto the stack. Callbacks are executed on responses, last in the Faraday middleware stack.
111 112 113 |
# File 'lib/zendesk_api/client.rb', line 111 def insert_callback(&block) @callbacks << block end |
#respond_to?(method, *args) ⇒ Boolean
51 52 53 |
# File 'lib/zendesk_api/client.rb', line 51 def respond_to?(method, *args) ((cache = @resource_cache[method]) && cache[:class]) || !method_as_class(method).nil? || super end |