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.