lib/foursquare2/client.rb in foursquare2-1.4.2 vs lib/foursquare2/client.rb in foursquare2-1.5.0
- old
+ new
@@ -1,36 +1,48 @@
require 'forwardable'
module Foursquare2
class Client
+ DEFAULT_CONNECTION_MIDDLEWARE = [
+ Faraday::Request::Multipart,
+ Faraday::Request::UrlEncoded,
+ FaradayMiddleware::Mashify,
+ FaradayMiddleware::ParseJson
+ ]
+
extend Forwardable
include Venues
include Checkins
include Tips
include Photos
include Settings
include Specials
include Users
- attr_reader :client_id, :client_secret, :oauth_token
+ attr_reader :client_id, :client_secret, :oauth_token, :api_version
#Initialize the client class that will be used for all foursquare API requests. Note that either a valid user oauth token OR a valid client_id + secret is required.
#
#Certain requests will require an oauth token. See http://developer.foursquare.com/docs/index_docs.html for the full list.
#
# @param [Hash] options
# @option options String :client_id Your foursquare app's client_id
# @option options String :client_secret Your foursquare app's client_secret
# @option options String :oauth_token A valid oauth token for a user (or the 'secret' value from api v1)
+ # @option options String :api_version A date formatted as YYYYMMDD indicating the API version you intend to use
+ # @option options Array :connection_middleware A collection of different middleware to be applied when the connection is created
# @option options Hash :ssl Additional SSL options (like the path to certificate file)
def initialize(options={})
@client_id = options[:client_id]
@client_secret = options[:client_secret]
@oauth_token = options[:oauth_token]
+ @api_version = options[:api_version]
@ssl = options[:ssl].nil? ? Hash.new : options[:ssl]
+ @connection_middleware = options.fetch(:connection_middleware, [])
+ @connection_middleware += DEFAULT_CONNECTION_MIDDLEWARE
end
def ssl
@ssl
end
@@ -40,18 +52,15 @@
def connection
params = {}
params[:client_id] = @client_id if @client_id
params[:client_secret] = @client_secret if @client_secret
params[:oauth_token] = @oauth_token if @oauth_token
+ params[:v] = @api_version if @api_version
@connection ||= Faraday::Connection.new(:url => api_url, :ssl => @ssl, :params => params, :headers => default_headers) do |builder|
- builder.use Faraday::Request::Multipart
- builder.use Faraday::Request::UrlEncoded
-
- builder.use FaradayMiddleware::Mashify
- builder.use FaradayMiddleware::ParseJson
-
+ @connection_middleware.each do |middleware|
+ builder.use *middleware
+ end
builder.adapter Faraday.default_adapter
-
end
end
# Base URL for api requests.