summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorZack Hobson2013-12-22 20:27:59 -0800
committerZack Hobson2013-12-22 20:27:59 -0800
commit68cc0f7d51b983c007e4aad63705e535530e1bd3 (patch)
tree65dc88011555f7726df2521eded08ef945ad8070 /lib
parentf22aaeb06d26a59012f6e2b23ee9d480379c003f (diff)
downloadhcl-68cc0f7d51b983c007e4aad63705e535530e1bd3.tar.bz2
fix throttling and malformed json
Diffstat (limited to 'lib')
-rw-r--r--lib/hcl/harvest_middleware.rb12
-rw-r--r--lib/hcl/timesheet_resource.rb2
2 files changed, 7 insertions, 7 deletions
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