class Pupa::Processor::Client
An HTTP client factory.
Public Class Methods
new(cache_dir: nil, expires_in: 86400, value_max_bytes: 1048576, memcached_username: nil, memcached_password: nil, level: 'INFO', logdev: STDOUT, faraday_options: {})
click to toggle source
Returns a configured Faraday
HTTP client.
To automatically parse XML responses, you must ‘require ’multi_xml’‘.
Memcached support depends on the ‘dalli` gem.
@param [String] cache_dir a directory or a Memcached address
(e.g. `memcached://localhost:11211`) in which to cache requests
@param [Integer] expires_in the cache’s expiration time in seconds @param [Integer] value_max_bytes the maximum Memcached item size @param [String] memcached_username the Memcached username @param [String] memcached_password the Memcached password @param [String] level the log level @param [String,IO] logdev the log device @param [Hash] faraday_options Faraday
initialization options @return [Faraday::Connection] a configured Faraday
HTTP client
# File lib/pupa/processor/client.rb, line 43 def self.new(cache_dir: nil, expires_in: 86400, value_max_bytes: 1048576, memcached_username: nil, memcached_password: nil, level: 'INFO', logdev: STDOUT, faraday_options: {}) # 1 day follow_redirects = faraday_options.delete(:follow_redirects) Faraday.new(faraday_options) do |connection| connection.request :url_encoded connection.use Middleware::Logger, Logger.new('faraday', level: level) connection.use Faraday::Response::RaiseError # @see http://tools.ietf.org/html/rfc4627 connection.use Middleware::ParseJson, preserve_raw: true, content_type: /\bjson$/ # @see http://tools.ietf.org/html/rfc2854 # @see http://tools.ietf.org/html/rfc3236 if defined?(Nokogiri) connection.use Middleware::ParseHtml, preserve_raw: true, content_type: %w(text/html application/xhtml+xml) end # @see http://tools.ietf.org/html/rfc3023 if defined?(MultiXml) connection.use FaradayMiddleware::ParseXml, preserve_raw: true, content_type: /\bxml$/ end if follow_redirects connection.use FaradayMiddleware::FollowRedirects, follow_redirects end if Faraday.const_defined?('CookieJar') connection.use Faraday::CookieJar end # Must come after the parser middlewares. connection.use FaradayMiddleware::Gzip if cache_dir connection.response :caching do address = cache_dir[%r{\Amemcached://(.+)\z}, 1] if address ActiveSupport::Cache::MemCacheStore.new(address, expires_in: expires_in, value_max_bytes: Integer(value_max_bytes), username: memcached_username, password: memcached_password) else ActiveSupport::Cache::FileStore.new(cache_dir, expires_in: expires_in) end end end if defined?(Typhoeus) connection.adapter :typhoeus else connection.adapter Faraday.default_adapter # must be last end end end