Class: Yelp::Fusion::Client

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/yelp/fusion/client.rb

Overview

Base class for the Yelp Client

Constant Summary collapse

API_HOST =
'https://api.yelp.com'.freeze

Constants included from Singleton

Singleton::REQUEST_CLASSES

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(option = nil) ⇒ Client

Creates an instance of the fusion client

Parameters:

  • options (String, nil)

    a consumer key



48
49
50
51
52
53
54
# File 'lib/yelp/fusion/client.rb', line 48

def initialize(option = nil)
  @configuration = nil
  define_request_methods
  return if option.nil?

  @configuration = Configuration.new(option)
end

Instance Attribute Details

#configurationObject

Returns the value of attribute configuration.



42
43
44
# File 'lib/yelp/fusion/client.rb', line 42

def configuration
  @configuration
end

Instance Method Details

#check_api_keys@configuration

Checks that all the keys needed were given

Returns:



69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/yelp/fusion/client.rb', line 69

def check_api_keys
  if @configuration.nil? ||
     @configuration.api_key.nil? ||
     defined?(@configuration.api_key).nil?

    @configuration = nil
    raise Error::MissingAPIKeys
  else
    # Freeze the configuration so it cannot be modified once the gem is
    # configured.
    @configuration.freeze
  end
end

#configure {|@configuration| ... } ⇒ @configuration

Creates a configuration with API keys

Yields:

Returns:

Raises:



59
60
61
62
63
64
65
# File 'lib/yelp/fusion/client.rb', line 59

def configure
  raise Error::AlreadyConfigured unless @configuration.nil?

  @configuration = Configuration.new
  yield(@configuration)
  check_api_keys
end

#connectionObject

API connection



84
85
86
87
88
89
90
91
92
93
# File 'lib/yelp/fusion/client.rb', line 84

def connection
  return @connection if instance_variable_defined?(:@connection)

  check_api_keys
  @connection = Faraday.new(API_HOST) do |conn|
    conn.request :oauth2, @configuration.api_key, token_type: :bearer
    # Using default http library
    conn.adapter :net_http
  end
end