http-form_data 2.0.0.pre1 → 2.0.0.pre2
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 +4 -4
- data/CHANGES.md +8 -1
- data/lib/http/form_data/urlencoded.rb +8 -11
- data/lib/http/form_data/version.rb +1 -1
- data/spec/lib/http/form_data/multipart_spec.rb +14 -6
- data/spec/lib/http/form_data/urlencoded_spec.rb +20 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f49eaa6a2789b48f0e43011a737fa95aad75e511
|
4
|
+
data.tar.gz: f0768565855e6777a5ef4206e827759871607e4b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c44060c6430184df6628fe2972656546744e6434a40446d649851de99e5c7e8be0d5dce0307a6aeff11794fa1b1d77a620d26a085f15fa8316b74aac39e91c2a
|
7
|
+
data.tar.gz: ed0d387052a1d0681a4b086fd5354e12f0a1a2776a1b35277611deda95d5f10285223bcd352447ffe4fe47af301b4fe97a91d628ae39702fb6b702411c5b432a
|
data/CHANGES.md
CHANGED
@@ -1,4 +1,11 @@
|
|
1
|
-
## 2.0.0
|
1
|
+
## 2.0.0.pre2 (2017-05-11)
|
2
|
+
|
3
|
+
* [#14](https://github.com/httprb/form_data/pull/14)
|
4
|
+
Enable streaming for urlencoded form data.
|
5
|
+
[@janko-m][]
|
6
|
+
|
7
|
+
|
8
|
+
## 2.0.0.pre1 (2017-05-10)
|
2
9
|
|
3
10
|
* [#12](https://github.com/httprb/form_data.rb/pull/12)
|
4
11
|
Enable form data streaming.
|
@@ -1,21 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "http/form_data/readable"
|
4
|
+
|
3
5
|
require "uri"
|
6
|
+
require "stringio"
|
4
7
|
|
5
8
|
module HTTP
|
6
9
|
module FormData
|
7
10
|
# `application/x-www-form-urlencoded` form data.
|
8
11
|
class Urlencoded
|
12
|
+
include Readable
|
13
|
+
|
9
14
|
# @param [#to_h, Hash] data form data key-value Hash
|
10
15
|
def initialize(data)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
# Returns content to be used for HTTP request body.
|
15
|
-
#
|
16
|
-
# @return [String]
|
17
|
-
def to_s
|
18
|
-
::URI.encode_www_form @data
|
16
|
+
uri_encoded_data = ::URI.encode_www_form FormData.ensure_hash(data)
|
17
|
+
@io = StringIO.new(uri_encoded_data)
|
19
18
|
end
|
20
19
|
|
21
20
|
# Returns MIME type to be used for HTTP request `Content-Type` header.
|
@@ -29,9 +28,7 @@ module HTTP
|
|
29
28
|
# `Content-Length` header.
|
30
29
|
#
|
31
30
|
# @return [Integer]
|
32
|
-
|
33
|
-
to_s.bytesize
|
34
|
-
end
|
31
|
+
alias content_length size
|
35
32
|
end
|
36
33
|
end
|
37
34
|
end
|
@@ -1,10 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
RSpec.describe HTTP::FormData::Multipart do
|
4
|
+
subject(:form_data) { HTTP::FormData::Multipart.new params }
|
5
|
+
|
4
6
|
let(:file) { HTTP::FormData::File.new fixture "the-http-gem.info" }
|
5
7
|
let(:params) { { :foo => :bar, :baz => file } }
|
6
8
|
let(:boundary) { /-{21}[a-f0-9]{42}/ }
|
7
|
-
subject(:form_data) { HTTP::FormData::Multipart.new params }
|
8
9
|
|
9
10
|
describe "#to_s" do
|
10
11
|
def disposition(params)
|
@@ -15,7 +16,7 @@ RSpec.describe HTTP::FormData::Multipart do
|
|
15
16
|
let(:crlf) { "\r\n" }
|
16
17
|
|
17
18
|
it "properly generates multipart data" do
|
18
|
-
boundary_value = form_data.
|
19
|
+
boundary_value = form_data.boundary
|
19
20
|
|
20
21
|
expect(form_data.to_s).to eq [
|
21
22
|
"--#{boundary_value}#{crlf}",
|
@@ -30,7 +31,9 @@ RSpec.describe HTTP::FormData::Multipart do
|
|
30
31
|
end
|
31
32
|
|
32
33
|
context "with user-defined boundary" do
|
33
|
-
|
34
|
+
subject(:form_data) do
|
35
|
+
HTTP::FormData::Multipart.new params, :boundary => "my-boundary"
|
36
|
+
end
|
34
37
|
|
35
38
|
it "uses the given boundary" do
|
36
39
|
expect(form_data.to_s).to eq [
|
@@ -108,10 +111,13 @@ RSpec.describe HTTP::FormData::Multipart do
|
|
108
111
|
it { is_expected.to match(content_type) }
|
109
112
|
|
110
113
|
context "with user-defined boundary" do
|
111
|
-
let(:form_data)
|
114
|
+
let(:form_data) do
|
115
|
+
HTTP::FormData::Multipart.new params, :boundary => "my-boundary"
|
116
|
+
end
|
112
117
|
|
113
118
|
it "includes the given boundary" do
|
114
|
-
expect(form_data.content_type)
|
119
|
+
expect(form_data.content_type)
|
120
|
+
.to eq "multipart/form-data; boundary=my-boundary"
|
115
121
|
end
|
116
122
|
end
|
117
123
|
end
|
@@ -127,7 +133,9 @@ RSpec.describe HTTP::FormData::Multipart do
|
|
127
133
|
end
|
128
134
|
|
129
135
|
context "with user-defined boundary" do
|
130
|
-
let(:form_data)
|
136
|
+
let(:form_data) do
|
137
|
+
HTTP::FormData::Multipart.new params, :boundary => "my-boundary"
|
138
|
+
end
|
131
139
|
|
132
140
|
it "returns the given boundary" do
|
133
141
|
expect(form_data.boundary).to eq "my-boundary"
|
@@ -29,4 +29,24 @@ RSpec.describe HTTP::FormData::Urlencoded do
|
|
29
29
|
it { is_expected.to eq "foo%5Bbar%5D=%D1%82%D0%B5%D1%81%D1%82" }
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
describe "#size" do
|
34
|
+
it "returns bytesize of multipart data" do
|
35
|
+
expect(form_data.size).to eq form_data.to_s.bytesize
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "#read" do
|
40
|
+
it "returns multipart data" do
|
41
|
+
expect(form_data.read).to eq form_data.to_s
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "#rewind" do
|
46
|
+
it "rewinds the multipart data IO" do
|
47
|
+
form_data.read
|
48
|
+
form_data.rewind
|
49
|
+
expect(form_data.read).to eq form_data.to_s
|
50
|
+
end
|
51
|
+
end
|
32
52
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: http-form_data
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.pre2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aleksey V Zapparov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -87,7 +87,7 @@ rubyforge_project:
|
|
87
87
|
rubygems_version: 2.6.11
|
88
88
|
signing_key:
|
89
89
|
specification_version: 4
|
90
|
-
summary: http-form_data-2.0.0.
|
90
|
+
summary: http-form_data-2.0.0.pre2
|
91
91
|
test_files:
|
92
92
|
- spec/fixtures/expected-multipart-body.tpl
|
93
93
|
- spec/fixtures/the-http-gem.info
|