From eb7a77fb3648f1581404eb1e3f21767c5cb0406b Mon Sep 17 00:00:00 2001 From: LightGuard Date: Fri, 30 Jan 2015 17:29:57 -0700 Subject: [PATCH] Adding retries to the faraday options. I also changed all the calls to faraday to use the helper class. --- lib/aweplug/extensions/kramdown_demo.rb | 14 ++++----- lib/aweplug/google_apis.rb | 30 ++++++++----------- lib/aweplug/helpers/faraday.rb | 16 ++++++---- lib/aweplug/helpers/google_spreadsheets.rb | 35 ++++++++++------------ lib/aweplug/helpers/searchisko.rb | 27 +++++++---------- lib/aweplug/helpers/video/vimeo.rb | 26 ++++++---------- 6 files changed, 63 insertions(+), 85 deletions(-) diff --git a/lib/aweplug/extensions/kramdown_demo.rb b/lib/aweplug/extensions/kramdown_demo.rb index 8bc8147..02de80c 100644 --- a/lib/aweplug/extensions/kramdown_demo.rb +++ b/lib/aweplug/extensions/kramdown_demo.rb @@ -4,6 +4,7 @@ require 'kramdown' require 'aweplug/helpers/kramdown_metadata' require 'aweplug/helpers/searchisko' +require 'aweplug/helpers/faraday' require 'yaml' require 'aweplug/handlers/synthetic_handler' require 'awestruct/page' @@ -177,18 +178,15 @@ def build url, site, ids = [] end def init_faraday site - @faraday ||= Faraday.new do |builder| + unless site.log_faraday if (site.log_faraday.is_a?(::Logger)) - builder.response :logger, @logger = site.log_faraday + @logger = site.log_faraday else - builder.response :logger, @logger = ::Logger.new('_tmp/faraday.log', 'daily') + @logger = ::Logger.new('_tmp/faraday.log', 'daily') end - builder.request :url_encoded - builder.request :retry - builder.use FaradayMiddleware::Caching, @cache, {} - builder.use FaradayMiddleware::FollowRedirects, limit: 3 - builder.adapter Faraday.default_adapter end + + @faraday ||= Aweplug::Helpers::FaradayHelper.default({:cache => @cache, :logger => @logger}) end def from_yaml url diff --git a/lib/aweplug/google_apis.rb b/lib/aweplug/google_apis.rb index 1252237..8069c36 100644 --- a/lib/aweplug/google_apis.rb +++ b/lib/aweplug/google_apis.rb @@ -1,7 +1,6 @@ require 'google/api_client' require 'aweplug/cache' -require 'faraday' -require 'faraday_middleware' +require 'aweplug/helpers/faraday' module Aweplug module GoogleAPIs @@ -11,28 +10,23 @@ module GoogleAPIs # Get the Google API Client def google_client site, logger: true, authenticate: true, readonly: true cache = Aweplug::Cache.default site + if (logger) + if (logger.is_a?(::Logger)) + @logger = logger + else + @logger = ::Logger.new('_tmp/faraday.log', 'daily') + end + end opts = { :application_name => site.application_name, :application_version => site.application_version } opts.merge!({:key => ENV['google_api_key']}) if authenticate && readonly opts.merge!({:authorization => nil}) if readonly + # TODO Add write access client = Google::APIClient.new opts - faraday = Faraday.new do |builder| - if (logger) - if (logger.is_a?(::Logger)) - builder.response :logger, @logger = logger - else - builder.response :logger, @logger = ::Logger.new('_tmp/faraday.log', 'daily') - end - end - builder.use FaradayMiddleware::Caching, cache, {} - builder.use FaradayMiddleware::FollowRedirects - builder.adapter :net_http - builder.response :gzip - builder.options.params_encoder = Faraday::FlatParamsEncoder - builder.ssl.ca_file = client.connection.ssl.ca_file - builder.ssl.verify = true - end + faraday = Aweplug::Helpers::FaradayHelper.default({:logger => @logger, :cache => cache}) + faraday.ssl.ca_file = client.connection.ssl.ca_file + client.connection = faraday client end diff --git a/lib/aweplug/helpers/faraday.rb b/lib/aweplug/helpers/faraday.rb index 2a9047d..cac7f44 100644 --- a/lib/aweplug/helpers/faraday.rb +++ b/lib/aweplug/helpers/faraday.rb @@ -8,7 +8,7 @@ module Helpers class FaradayHelper # Public: Returns a basic Faraday connection using options passed in # - # url: Required url (String or URI) for the base of the full URL. + # url: URL (String or URI) for the base of the full URL. # opts: Hash of options to use. # :logger - Logger to use, if none is provided a default is used. # :cache - Optional cache to use. @@ -16,19 +16,25 @@ class FaradayHelper # :adapter - Faraday Adapter to use, :net_http by default. # # Returns a configured Faraday connection. - def self.default url, opts = {} + def self.default url = nil, opts = {} logger = opts[:logger] || Logger.new('_tmp/faraday.log', 'daily') - conn = Faraday.new(url: url) do |builder| + conn = Faraday.new do |builder| builder.response :logger, @logger = logger unless opts[:no_cache] builder.use FaradayMiddleware::Caching, (opts[:cache] || Aweplug::Cache::FileCache.new), {} end - builder.adapter (opts[:adapter] ||:net_http) + builder.request :retry + builder.request :url_encoded + builder.request :retry + builder.response :raise_error + builder.response :gzip builder.options.params_encoder = Faraday::FlatParamsEncoder - builder.use FaradayMiddleware::FollowRedirects + builder.use FaradayMiddleware::FollowRedirects, limit: 3 builder.ssl.verify = true + builder.adapter (opts[:adapter] ||:net_http) end + conn.url_prefix = url if (url.is_a?(String) || url.is_a?(URI)) conn end end diff --git a/lib/aweplug/helpers/google_spreadsheets.rb b/lib/aweplug/helpers/google_spreadsheets.rb index 880f717..61dd549 100644 --- a/lib/aweplug/helpers/google_spreadsheets.rb +++ b/lib/aweplug/helpers/google_spreadsheets.rb @@ -5,6 +5,7 @@ require 'faraday_middleware' require 'logger' require 'aweplug/cache' +require 'aweplug/helpers/faraday' module Aweplug module Helpers @@ -107,27 +108,21 @@ def initialize site: , authenticate: false, logger: true, raise_error: false, ad @site = site @authenticate = authenticate - Aweplug::Cache.default site - - @faraday = Faraday.new(:url => BASE_URL) do |builder| - if authenticate - oauth2_client = client_signet - builder.use FaradayMiddleware::OAuth2, oauth2_client.access_token - end - if (logger) - if (logger.is_a?(::Logger)) - builder.response :logger, @logger = logger - else - builder.response :logger, @logger = ::Logger.new('_tmp/faraday.log', 'daily') - end + cache = Aweplug::Cache.default site + if (logger) + if (logger.is_a?(::Logger)) + @logger = logger + else + ::Logger.new('_tmp/faraday.log', 'daily') end - builder.request :url_encoded - builder.request :retry - builder.response :raise_error if raise_error - builder.use FaradayMiddleware::FollowRedirects - builder.use FaradayMiddleware::Caching, Aweplug::Cache.default(site), {} - #builder.response :json, :content_type => /\bjson$/ - builder.adapter adapter || :net_http + end + + @faraday = Aweplug::Helpers::FaradayHelper.default BASE_URL, {:cache => cache, :logger => @logger} + faraday_builder = @faraday.builder + + if authenticate + oauth2_client = client_signet + faraday_builder.use FaradayMiddleware::OAuth2, oauth2_client.access_token end end diff --git a/lib/aweplug/helpers/searchisko.rb b/lib/aweplug/helpers/searchisko.rb index 234230c..99803cc 100644 --- a/lib/aweplug/helpers/searchisko.rb +++ b/lib/aweplug/helpers/searchisko.rb @@ -1,6 +1,5 @@ -require 'faraday' -require 'faraday_middleware' require 'aweplug/cache' +require 'aweplug/helpers/faraday' require 'logger' require 'json' require 'uri' @@ -61,23 +60,17 @@ def initialize opts={} unless [:searchisko_username, :searchisko_password].all? {|required| opts.key? required} raise 'Missing searchisko credentials' end - @faraday = Faraday.new(:url => opts[:base_url]) do |builder| - builder.request :basic_auth, opts[:searchisko_username], opts[:searchisko_password] - if (opts[:logger]) - if (opts[:logger].is_a?(::Logger)) - builder.response :logger, @logger = opts[:logger] - else - builder.response :logger, @logger = ::Logger.new('_tmp/faraday.log', 'daily') - end + + if (opts[:logger]) + if (opts[:logger].is_a?(::Logger)) + @logger = opts[:logger] + else + @logger = ::Logger.new('_tmp/faraday.log', 'daily') end - builder.request :url_encoded - builder.request :retry - builder.response :raise_error if opts[:raise_error] - builder.use FaradayMiddleware::Caching, opts[:cache], {} - builder.use FaradayMiddleware::FollowRedirects - #builder.response :json, :content_type => /\bjson$/ - builder.adapter opts[:adapter] || :net_http end + + @faraday = Aweplug::Helpers::FaradayHelper.default(opts[:base_url], {:cache => opts[:cache], :logger => @logger}) + @faraday.basic_auth opts[:searchisko_username], opts[:searchisko_password] @cache = opts[:cache] @searchisko_warnings = opts[:searchisko_warnings] if opts.has_key? :searchisko_warnings end diff --git a/lib/aweplug/helpers/video/vimeo.rb b/lib/aweplug/helpers/video/vimeo.rb index c048f78..f2da631 100644 --- a/lib/aweplug/helpers/video/vimeo.rb +++ b/lib/aweplug/helpers/video/vimeo.rb @@ -1,12 +1,11 @@ require 'oauth' require 'aweplug/cache' +require 'aweplug/helpers/faraday' require 'aweplug/helpers/video/vimeo_video' require 'aweplug/helpers/searchisko_social' require 'aweplug/helpers/video/helpers' require 'tilt' require 'yaml' -require 'faraday' -require 'faraday_middleware' module Aweplug module Helpers @@ -21,23 +20,16 @@ def initialize site, logger: true, raise_error: false, adapter: nil, default_ttl @site = site cache = Aweplug::Cache.default @site, default_ttl - - @faraday = Faraday.new(:url => BASE_URL) do |builder| - if (logger) - if (logger.is_a?(::Logger)) - builder.response :logger, @logger = logger - else - builder.response :logger, @logger = ::Logger.new('_tmp/faraday.log', 'daily') - end + if (logger) + if (logger.is_a?(::Logger)) + @logger = logger + else + @logger = ::Logger.new('_tmp/faraday.log', 'daily') end - builder.request :url_encoded - builder.request :retry - builder.response :gzip - builder.request :authorization, 'bearer', ENV['vimeo_access_token'] - builder.use FaradayMiddleware::FollowRedirects - builder.use FaradayMiddleware::Caching, cache, {} - builder.adapter adapter || :net_http end + + @faraday = Aweplug::Helpers::FaradayHelper.default(BASE_URL, {:cache => cache, :logger => @logger}) + @faraday.authorization 'bearer', ENV['vimeo_access_token'] end def add(url, product: nil, push_to_searchisko: true)