degzipper 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cfe03a119e7b59ea20518cb877c335abb717f1f6
4
- data.tar.gz: 1d4121372cf7b74a828f344386aaa7a47b7e45dd
3
+ metadata.gz: 1151434f8833470a8de8ba07d73bd3430c2330e9
4
+ data.tar.gz: 51b24f05136a687187e2977a6bf7e589d118c836
5
5
  SHA512:
6
- metadata.gz: bd6ed2d875f4fa97880e9bb3b53d84f8866775156d48c3d00ff7cfd12c0ed9ce8c566b62d8403c57dfb9e6ef902f22d0aaef3e17acc0cf06b634a9e992341ee6
7
- data.tar.gz: af4d58065269ff00f4b2101840c234507611df8dd8c5389c8f3f4d65667b21c8a4936221c60ec8c05cd99adede95515dd29d8c24a09816eca6352fce8fdd5c95
6
+ metadata.gz: c7f93d6007d513925ab291f3757e502d7757d15126585116725d5ffa8e7b75c14f981d0802a2d1bdeb35d338525b425cbaf5b844b0c5d47f991822b4d631a21e
7
+ data.tar.gz: 19149bcb8ac05e5470c0f35b13a626ad474dfeb18cdd754dc9e31bd599ee1866592e7f9bf3299e452a52ced7b5980525f700a85285c13472b675e78578e45fc6
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
data/degzipper.gemspec CHANGED
@@ -20,4 +20,5 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
23
24
  end
@@ -17,7 +17,7 @@ module Degzipper
17
17
  extracted = decode(env['rack.input'], env['HTTP_CONTENT_ENCODING'])
18
18
 
19
19
  env.delete('HTTP_CONTENT_ENCODING')
20
- env['CONTENT_LENGTH'] = extracted.length
20
+ env['CONTENT_LENGTH'] = extracted.bytesize
21
21
  env['rack.input'] = StringIO.new(extracted)
22
22
  end
23
23
 
@@ -1,3 +1,3 @@
1
1
  module Degzipper
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,80 @@
1
+ require 'degzipper'
2
+ require 'json'
3
+ require 'rack'
4
+ require 'zlib'
5
+
6
+ RSpec.describe Degzipper::Middleware do
7
+ def gzip(content)
8
+ string_io = StringIO.new
9
+
10
+ gz = Zlib::GzipWriter.new(string_io)
11
+ gz.write content
12
+ gz.close
13
+
14
+ string_io.string
15
+ end
16
+
17
+ let(:middleware) do
18
+ Degzipper::Middleware.new(-> (env) do
19
+ req = Rack::Request.new(env)
20
+
21
+ body = JSON.dump(
22
+ body: req.body.read,
23
+ content_encoding: env['HTTP_CONTENT_ENCODING'],
24
+ length: req.content_length.to_i
25
+ )
26
+
27
+ [200, {}, [body]]
28
+ end)
29
+ end
30
+
31
+ it 'passes through a non-gzipped request body' do
32
+ _, _, body = middleware.call(Rack::MockRequest.env_for(
33
+ '/',
34
+ method: 'POST',
35
+ input: 'hello'
36
+ ))
37
+
38
+ parsed_body = JSON.parse(body.first)
39
+
40
+ expect(parsed_body).to eq(
41
+ 'body' => 'hello',
42
+ 'content_encoding' => nil,
43
+ 'length' => 5
44
+ )
45
+ end
46
+
47
+ it 'extracts a gzipped request body' do
48
+ _, _, body = middleware.call(Rack::MockRequest.env_for(
49
+ '/',
50
+ method: 'POST',
51
+ input: gzip('hello'),
52
+ 'HTTP_CONTENT_ENCODING' => 'gzip'
53
+ ))
54
+
55
+ parsed_body = JSON.parse(body.first)
56
+
57
+ expect(parsed_body).to eq(
58
+ 'body' => 'hello',
59
+ 'content_encoding' => nil,
60
+ 'length' => 5
61
+ )
62
+ end
63
+
64
+ it 'sets the correct content length for UTF-8 content' do
65
+ _, _, body = middleware.call(Rack::MockRequest.env_for(
66
+ '/',
67
+ method: 'POST',
68
+ input: gzip('你好'),
69
+ 'HTTP_CONTENT_ENCODING' => 'gzip'
70
+ ))
71
+
72
+ parsed_body = JSON.parse(body.first)
73
+
74
+ expect(parsed_body).to eq(
75
+ 'body' => '你好',
76
+ 'content_encoding' => nil,
77
+ 'length' => 6
78
+ )
79
+ end
80
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: degzipper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Hammond
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-01 00:00:00.000000000 Z
12
+ date: 2015-05-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -39,6 +39,20 @@ dependencies:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rspec
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
42
56
  description: Rack middleware to inflate incoming Gzip data from HTTP requests.
43
57
  email:
44
58
  - andrew@evertrue.com
@@ -47,6 +61,7 @@ extensions: []
47
61
  extra_rdoc_files: []
48
62
  files:
49
63
  - ".gitignore"
64
+ - ".rspec"
50
65
  - Gemfile
51
66
  - LICENSE.txt
52
67
  - README.md
@@ -56,6 +71,7 @@ files:
56
71
  - lib/degzipper/middleware.rb
57
72
  - lib/degzipper/rails.rb
58
73
  - lib/degzipper/version.rb
74
+ - spec/degzipper_spec.rb
59
75
  homepage: http://github.com/andrhamm/degzipper
60
76
  licenses:
61
77
  - MIT
@@ -80,4 +96,5 @@ rubygems_version: 2.2.2
80
96
  signing_key:
81
97
  specification_version: 4
82
98
  summary: Rack middleware to inflate incoming Gzip data from HTTP requests.
83
- test_files: []
99
+ test_files:
100
+ - spec/degzipper_spec.rb