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.
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/zendesk_api/client.rb', line 83 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.
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/zendesk_api/client.rb', line 38 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.
33 34 35 |
# File 'lib/zendesk_api/client.rb', line 33 def callbacks @callbacks end |
#config ⇒ Configuration (readonly)
Returns Config instance.
31 32 33 |
# File 'lib/zendesk_api/client.rb', line 31 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
117 118 119 120 121 |
# File 'lib/zendesk_api/client.rb', line 117 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.
105 106 107 108 |
# File 'lib/zendesk_api/client.rb', line 105 def connection @connection ||= build_connection return @connection end |
#current_account(reload = false) ⇒ Hash
Returns the current account
65 66 67 68 |
# File 'lib/zendesk_api/client.rb', line 65 def current_account(reload = false) return @current_account if @current_account && !reload @current_account = SilentMash.new(connection.get('account/resolve').body) end |
#current_locale(reload = false) ⇒ ZendeskAPI::Locale
Returns the current locale
72 73 74 75 |
# File 'lib/zendesk_api/client.rb', line 72 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)
58 59 60 61 |
# File 'lib/zendesk_api/client.rb', line 58 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.
112 113 114 |
# File 'lib/zendesk_api/client.rb', line 112 def insert_callback(&block) @callbacks << block end |
#respond_to?(method, *args) ⇒ Boolean
52 53 54 |
# File 'lib/zendesk_api/client.rb', line 52 def respond_to?(method, *args) ((cache = @resource_cache[method]) && cache[:class]) || !method_as_class(method).nil? || super end |