attune 1.0.8 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7be8348bda50301c2d67c55f04d974c616dd08c2
4
- data.tar.gz: 2a6f630315d49c5a3148a163804e3f27774a7def
3
+ metadata.gz: 33e278960925d8b1aeb5e7575b66a575299e6323
4
+ data.tar.gz: 614890038d5ff2ab7ad3d21517c08fa6bea7df01
5
5
  SHA512:
6
- metadata.gz: 8e8a3156494cef134484554b2b3973d37fd99d9da21513413ca54a1b2138a29f49b791d52792e4cfacadc1470d3d8a63301fb1078ebca5ce484b43b6ea313702
7
- data.tar.gz: 38565796e45a9b63f8aa452442f19386a37d7a34aa430bfb0c4d298c9be9a60ba3a7c910b98abc8d5083e9748dd8a70a7f6e8088bfbbb28866d7b6a18039f6d0
6
+ metadata.gz: 1be52d8cb15c9822985205f2824997e2de1c5e60e00e192d54deaa7243568205f894acc8880f6f9598d9b57b2746f70bf158023518b79d2d11a136e0f33083fc
7
+ data.tar.gz: 6b60a69e5a43cd521fafe45a5dda7cedcd55fb468ea891a54f37a63bd9ec3dc3de0f34813a4a6f1eccea6e2fcf0830be8cfeea97dad09d7a4e95786e4d6a7e65
@@ -1,7 +1,7 @@
1
1
  require 'attune/param_flattener'
2
2
  require "attune/call_dropping"
3
3
  require "attune/json_logger"
4
- require "attune/gzip_request"
4
+ require "attune/gzip"
5
5
  require "attune/net_http_persistent"
6
6
 
7
7
  module Attune
@@ -30,7 +30,7 @@ module Attune
30
30
  builder.use Attune::JsonLogger
31
31
 
32
32
  # Gzip requests, Faraday handles responses automatically
33
- builder.use Attune::GzipRequest
33
+ builder.use Attune::Gzip
34
34
 
35
35
  # Raise exceptions for HTTP 4xx/5xx
36
36
  builder.response :raise_error
@@ -0,0 +1,62 @@
1
+ module Attune
2
+ # Some code taken from a yet to be released version of faraday-middleware
3
+ class Gzip < Faraday::Middleware
4
+ dependency 'zlib'
5
+
6
+ CONTENT_TYPE = 'Content-Type'.freeze
7
+ CONTENT_ENCODING = 'Content-Encoding'.freeze
8
+ MIME_TYPE = 'application/json'.freeze
9
+ ENCODING_TYPE = 'gzip'.freeze
10
+ ACCEPT_ENCODING = 'Accept-Encoding'.freeze
11
+ CONTENT_LENGTH = 'Content-Length'.freeze
12
+ SUPPORTED_ENCODINGS = 'gzip,deflate'.freeze
13
+ RUBY_ENCODING = '1.9'.respond_to?(:force_encoding)
14
+
15
+ def call(env)
16
+ if has_body?(env) && is_json?(env)
17
+ wio = StringIO.new("w")
18
+ w_gz = Zlib::GzipWriter.new(wio)
19
+ w_gz.write env[:body]
20
+ w_gz.close
21
+ env[:body] = wio.string
22
+ env[:request_headers][CONTENT_ENCODING] = ENCODING_TYPE
23
+ end
24
+ env[:request_headers][ACCEPT_ENCODING] ||= SUPPORTED_ENCODINGS
25
+ @app.call(env).on_complete do |env|
26
+ case env[:response_headers][CONTENT_ENCODING]
27
+ when 'gzip'
28
+ reset_body(env, &method(:uncompress_gzip))
29
+ when 'deflate'
30
+ reset_body(env, &method(:inflate))
31
+ end
32
+ end
33
+ end
34
+ def is_json?(env)
35
+ env[:request_headers][CONTENT_TYPE] == MIME_TYPE
36
+ end
37
+ def has_body?(env)
38
+ body = env[:body] and !(body.respond_to?(:to_str) and body.empty?)
39
+ end
40
+
41
+ def reset_body(env)
42
+ env[:body] = yield(env[:body])
43
+ env[:response_headers].delete(CONTENT_ENCODING)
44
+ env[:response_headers][CONTENT_LENGTH] = env[:body].length
45
+ end
46
+
47
+ def uncompress_gzip(body)
48
+ io = StringIO.new(body)
49
+ gzip_reader = if RUBY_ENCODING
50
+ Zlib::GzipReader.new(io, :encoding => 'ASCII-8BIT')
51
+ else
52
+ Zlib::GzipReader.new(io)
53
+ end
54
+ gzip_reader.read
55
+ end
56
+ def inflate(body)
57
+ Zlib::Inflate.inflate(body)
58
+ end
59
+ end
60
+ end
61
+
62
+
@@ -24,7 +24,6 @@ module Attune
24
24
  r_id: SecureRandom.uuid,
25
25
  status: response.status,
26
26
  ua: env[:request_headers]['User-Agent'],
27
- enc: env[:request_headers]['Content-Encoding'],
28
27
  method: env[:method],
29
28
  perf: {
30
29
  total: elapsed_time * 1000
@@ -1,4 +1,4 @@
1
1
  module Attune
2
- VERSION = "1.0.8"
2
+ VERSION = "1.0.9"
3
3
  end
4
4
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: attune
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Hawthorn
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-21 00:00:00.000000000 Z
12
+ date: 2014-07-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -147,7 +147,7 @@ files:
147
147
  - lib/attune/client.rb
148
148
  - lib/attune/configurable.rb
149
149
  - lib/attune/default.rb
150
- - lib/attune/gzip_request.rb
150
+ - lib/attune/gzip.rb
151
151
  - lib/attune/json_logger.rb
152
152
  - lib/attune/mocks.rb
153
153
  - lib/attune/models/anonymous_result.rb
@@ -201,4 +201,3 @@ test_files:
201
201
  - spec/attune_spec.rb
202
202
  - spec/remote_spec.rb
203
203
  - spec/spec_helper.rb
204
- has_rdoc:
@@ -1,27 +0,0 @@
1
- module Attune
2
- class GzipRequest < Faraday::Middleware
3
- CONTENT_TYPE = 'Content-Type'.freeze
4
- CONTENT_ENCODING = 'Content-Encoding'.freeze
5
- MIME_TYPE = 'application/json'.freeze
6
- ENCODING_TYPE = 'gzip'.freeze
7
-
8
- def call(env)
9
- if has_body?(env) && is_json?(env)
10
- wio = StringIO.new("w")
11
- w_gz = Zlib::GzipWriter.new(wio)
12
- w_gz.write env[:body]
13
- w_gz.close
14
- env[:body] = wio.string
15
- env[:request_headers][CONTENT_ENCODING] = ENCODING_TYPE
16
- end
17
- @app.call env
18
- end
19
- def is_json?(env)
20
- env[:request_headers][CONTENT_TYPE] == MIME_TYPE
21
- end
22
- def has_body?(env)
23
- body = env[:body] and !(body.respond_to?(:to_str) and body.empty?)
24
- end
25
- end
26
- end
27
-