Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding retries to the faraday options. #86

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions lib/aweplug/extensions/kramdown_demo.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down Expand Up @@ -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
Expand Down
30 changes: 12 additions & 18 deletions lib/aweplug/google_apis.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
require 'google/api_client'
require 'aweplug/cache'
require 'faraday'
require 'faraday_middleware'
require 'aweplug/helpers/faraday'

module Aweplug
module GoogleAPIs
Expand All @@ -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
Expand Down
16 changes: 11 additions & 5 deletions lib/aweplug/helpers/faraday.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,33 @@ 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.
# :no_cache - Boolean indicating not to use a cache.
# :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
Expand Down
35 changes: 15 additions & 20 deletions lib/aweplug/helpers/google_spreadsheets.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
require 'faraday_middleware'
require 'logger'
require 'aweplug/cache'
require 'aweplug/helpers/faraday'

module Aweplug
module Helpers
Expand Down Expand Up @@ -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

Expand Down
27 changes: 10 additions & 17 deletions lib/aweplug/helpers/searchisko.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
require 'faraday'
require 'faraday_middleware'
require 'aweplug/cache'
require 'aweplug/helpers/faraday'
require 'logger'
require 'json'
require 'uri'
Expand Down Expand Up @@ -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
Expand Down
26 changes: 9 additions & 17 deletions lib/aweplug/helpers/video/vimeo.rb
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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)
Expand Down