From 68cc0f7d51b983c007e4aad63705e535530e1bd3 Mon Sep 17 00:00:00 2001 From: Zack Hobson Date: Sun, 22 Dec 2013 20:27:59 -0800 Subject: fix throttling and malformed json --- lib/hcl/harvest_middleware.rb | 12 ++++++------ lib/hcl/timesheet_resource.rb | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/hcl/harvest_middleware.rb b/lib/hcl/harvest_middleware.rb index d4df9e8..47e790d 100644 --- a/lib/hcl/harvest_middleware.rb +++ b/lib/hcl/harvest_middleware.rb @@ -8,20 +8,20 @@ class HCl::HarvestMiddleware < FaradayMiddleware::ResponseMiddleware class ThrottleFailure < StandardError attr_reader :retry_after def initialize env - @retry_after = env[:headers]['Retry-After'].to_i + @retry_after = env[:response_headers]['retry-after'].to_i super "Too many requests! Try again in #{@retry_after} seconds." end end - define_parser do |body| - unescape MultiJson.load(body, symbolize_keys:true) - end - def call(env) @app.call(env).on_complete do |env| case env[:status] when 200..299 - env[:body] = unescape MultiJson.load(env[:body], symbolize_keys:true) + begin + env[:body] = unescape(MultiJson.load(env[:body].chomp, symbolize_keys:true)) + rescue MultiJson::LoadError + env[:body] + end when 300..399 raise Failure, "Redirected! Perhaps your ssl configuration variable is set incorrectly?" when 400..499 diff --git a/lib/hcl/timesheet_resource.rb b/lib/hcl/timesheet_resource.rb index c82e7ed..df32be7 100644 --- a/lib/hcl/timesheet_resource.rb +++ b/lib/hcl/timesheet_resource.rb @@ -50,7 +50,7 @@ module HCl f.headers['Accept'] = 'application/json' f.request :json f.request :basic_auth, login, password - f.use HCl::HarvestMiddleware, content_type: /\bjson$/ + f.use HCl::HarvestMiddleware, content_type: /\bjson\b/ f.adapter Faraday.default_adapter end end -- cgit v1.2.3