diff options
| author | Zack Hobson | 2013-12-26 12:47:02 -0800 |
|---|---|---|
| committer | Zack Hobson | 2013-12-26 12:47:02 -0800 |
| commit | 69cf87a9b35a85a25444590537ec49536f147299 (patch) | |
| tree | cddaeb01b51e03d4097428baa2d7b4680fb1c2d1 | |
| parent | 874217c87a7a23d82936ca63674548f64afdca2d (diff) | |
| download | hcl-69cf87a9b35a85a25444590537ec49536f147299.tar.bz2 | |
eliminate dependency on faraday_middleware
| -rw-r--r-- | Gemfile.lock | 3 | ||||
| -rw-r--r-- | hcl.gemspec | 1 | ||||
| -rw-r--r-- | lib/hcl/harvest_middleware.rb | 33 | ||||
| -rw-r--r-- | lib/hcl/net.rb | 16 |
4 files changed, 28 insertions, 25 deletions
diff --git a/Gemfile.lock b/Gemfile.lock index a468bfe..362ea92 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -5,7 +5,6 @@ PATH chronic escape_utils faraday - faraday_middleware highline trollop yajl-ruby @@ -19,8 +18,6 @@ GEM fakeweb (1.3.0) faraday (0.8.8) multipart-post (~> 1.2.0) - faraday_middleware (0.9.0) - faraday (>= 0.7.4, < 0.9) ffi (1.9.3-java) highline (1.6.20) metaclass (0.0.1) diff --git a/hcl.gemspec b/hcl.gemspec index 3f41b2f..7dd0fd8 100644 --- a/hcl.gemspec +++ b/hcl.gemspec @@ -19,7 +19,6 @@ Gem::Specification.new do |s| s.add_runtime_dependency 'chronic' s.add_runtime_dependency 'highline' s.add_runtime_dependency 'faraday' - s.add_runtime_dependency 'faraday_middleware' s.add_runtime_dependency 'yajl-ruby' s.add_runtime_dependency 'escape_utils' s.add_development_dependency 'rake' diff --git a/lib/hcl/harvest_middleware.rb b/lib/hcl/harvest_middleware.rb index 3e96a99..2b8b307 100644 --- a/lib/hcl/harvest_middleware.rb +++ b/lib/hcl/harvest_middleware.rb @@ -1,19 +1,19 @@ -require 'faraday_middleware/response_middleware' -require 'yajl' -require 'escape_utils' +require 'faraday/middleware' -class HCl::HarvestMiddleware < FaradayMiddleware::ResponseMiddleware - class Failure < StandardError; end - class AuthFailure < StandardError; end - class ThrottleFailure < StandardError - attr_reader :retry_after - def initialize env - @retry_after = env[:response_headers]['retry-after'].to_i - super "Too many requests! Try again in #{@retry_after} seconds." - end +class HCl::HarvestMiddleware < Faraday::Middleware + Faraday.register_middleware harvest: ->{ self } + MIME_TYPE = 'application/json'.freeze + + dependency do + require 'yajl' + require 'escape_utils' end def call(env) + env[:request_headers]['Accept'] = MIME_TYPE + env[:request_headers]['Content-Type'] = MIME_TYPE + env[:body] = Yajl::Encoder.encode(env[:body]) + @app.call(env).on_complete do |env| case env[:status] when 200..299 @@ -44,4 +44,13 @@ class HCl::HarvestMiddleware < FaradayMiddleware::ResponseMiddleware end end + class Failure < StandardError; end + class AuthFailure < StandardError; end + class ThrottleFailure < StandardError + attr_reader :retry_after + def initialize env + @retry_after = env[:response_headers]['retry-after'].to_i + super "Too many requests! Try again in #{@retry_after} seconds." + end + end end diff --git a/lib/hcl/net.rb b/lib/hcl/net.rb index 874240c..28be3c1 100644 --- a/lib/hcl/net.rb +++ b/lib/hcl/net.rb @@ -1,4 +1,4 @@ -require 'faraday_middleware' +require 'faraday' module HCl module Net @@ -20,28 +20,26 @@ module HCl end end - def faraday - @faraday ||= Faraday.new( + def http + @http ||= Faraday.new( "http#{ssl && 's'}://#{subdomain}.harvestapp.com" ) do |f| - f.headers['Accept'] = 'application/json' - f.request :json f.request :basic_auth, login, password - f.use HCl::HarvestMiddleware, content_type: /\bjson\b/ + f.use :harvest f.adapter Faraday.default_adapter end end def get action - faraday.get(action).body + http.get(action).body end def post action, data - faraday.post(action, data).body + http.post(action, data).body end def delete action - faraday.delete(action).body + http.delete(action).body end end end |
