rflow-components-http 1.1.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.ruby-version +1 -1
- data/.travis.yml +1 -3
- data/lib/rflow/components/http/version.rb +1 -1
- data/schema/http_request.avsc +3 -3
- data/schema/http_response.avsc +1 -1
- data/spec/schema_spec.rb +52 -0
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 51e7a5ffaa2fe475e26873cf3a3fa8682e9cedc12c2e653430f700b3fc9f4997
|
4
|
+
data.tar.gz: f62e1e136e2beab1f5b061f267a4b63e91b185dbfcf2ad18ba39b75efb3903f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4546c3f537e1a82a034e0983cab8c52974d21c36e4f186ce48f3289108f21219d90df0c3cd07b2dbe2904b211da4ec6965d62de9887bc1fbacc9b81318e17dfb
|
7
|
+
data.tar.gz: 11d7410f6d54df4ebe0c207a0624ac2f51a636571c2f61ae47f175cb43ec231f3f573d034ec4704915ac2d51598f86a401fb2533a960ecad30f39a309561afb7
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.
|
1
|
+
ruby-2.6.4
|
data/.travis.yml
CHANGED
@@ -17,6 +17,4 @@ before_install:
|
|
17
17
|
script: bundle exec rspec spec
|
18
18
|
|
19
19
|
notifications:
|
20
|
-
|
21
|
-
rooms:
|
22
|
-
secure: ZVFjNSjLq8mbEaEHTqKZWovWMR17Q8cs4q3spt2Q9Q7QJp+oRz4yFVKYZCRYPsh0+mnSo2Hl8qHn/JGhxI2HsiLQVHK/9tf4TNXmT3DL//fQPTSMEHUn5D0M0CNCAWFBIbUh2PocRJxhIdUEl3PS7U4mca2nDoA+V+r+HToTZpw=
|
20
|
+
slack: redjack:FMYKDe4eilb9usdN8BQe5ZMA
|
data/schema/http_request.avsc
CHANGED
@@ -10,10 +10,10 @@
|
|
10
10
|
{"name": "server_port", "type": ["int", "null"]},
|
11
11
|
|
12
12
|
{"name": "method", "type": "string"},
|
13
|
-
{"name": "uri", "type": "
|
14
|
-
{"name": "query_string", "type": ["
|
13
|
+
{"name": "uri", "type": "bytes"},
|
14
|
+
{"name": "query_string", "type": ["bytes", "null"]},
|
15
15
|
{"name": "protocol", "type": "string"},
|
16
|
-
{"name": "headers", "type": {"type": "map", "values": ["
|
16
|
+
{"name": "headers", "type": {"type": "map", "values": ["bytes", "null"]}},
|
17
17
|
{"name": "content", "type": ["bytes", "null"]}
|
18
18
|
]
|
19
19
|
}
|
data/schema/http_response.avsc
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
{"name": "protocol", "type": "string"},
|
13
13
|
{"name": "status_code", "type": "int"},
|
14
14
|
{"name": "status_reason_phrase", "type": "string"},
|
15
|
-
{"name": "headers", "type": {"type": "map", "values": "
|
15
|
+
{"name": "headers", "type": {"type": "map", "values": "bytes"}},
|
16
16
|
{"name": "content", "type": "bytes"}
|
17
17
|
]
|
18
18
|
}
|
data/spec/schema_spec.rb
CHANGED
@@ -29,6 +29,33 @@ describe 'RFlow::Message::Data::HTTP::Request Avro Schema' do
|
|
29
29
|
expect(decoded['content']).to eq(request['content'])
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
it "should encode and decode non-UTF8 data" do
|
34
|
+
request = {
|
35
|
+
'method' => 'METHOD',
|
36
|
+
'uri' => "\xFF".force_encoding('binary'),
|
37
|
+
'query_string' => "\xFF".force_encoding('binary'),
|
38
|
+
'protocol' => 'PROTOCOL',
|
39
|
+
'headers' => {
|
40
|
+
'header1' => "\xFF".force_encoding('binary'),
|
41
|
+
'header2' => "\xFF".force_encoding('binary')
|
42
|
+
},
|
43
|
+
'content' => '',
|
44
|
+
}
|
45
|
+
|
46
|
+
expect { encode_avro(schema, request) }.to_not raise_error
|
47
|
+
encoded_request = encode_avro(schema, request)
|
48
|
+
|
49
|
+
expect { decode_avro(schema, encoded_request) }.to_not raise_error
|
50
|
+
decode_avro(schema, encoded_request).tap do |decoded|
|
51
|
+
expect(decoded['method']).to eq(request['method'])
|
52
|
+
expect(decoded['uri']).to eq(request['uri'])
|
53
|
+
expect(decoded['query_string']).to eq(request['query_string'])
|
54
|
+
expect(decoded['protocol']).to eq(request['protocol'])
|
55
|
+
expect(decoded['headers']).to eq(request['headers'])
|
56
|
+
expect(decoded['content']).to eq(request['content'])
|
57
|
+
end
|
58
|
+
end
|
32
59
|
end
|
33
60
|
|
34
61
|
describe 'RFlow::Message::Data::HTTP::Response Avro Schema' do
|
@@ -58,4 +85,29 @@ describe 'RFlow::Message::Data::HTTP::Response Avro Schema' do
|
|
58
85
|
expect(decoded['content']).to eq(response['content'])
|
59
86
|
end
|
60
87
|
end
|
88
|
+
|
89
|
+
it "should encode and decode non-UTF8 data" do
|
90
|
+
response = {
|
91
|
+
'protocol' => 'METHOD',
|
92
|
+
'status_code' => 200,
|
93
|
+
'status_reason_phrase' => 'STATUSREASONPHRASE',
|
94
|
+
'headers' => {
|
95
|
+
'header1' => "\xFF".force_encoding('binary'),
|
96
|
+
'header2' => "\xFF".force_encoding('binary')
|
97
|
+
},
|
98
|
+
'content' => 'CONTENT',
|
99
|
+
}
|
100
|
+
|
101
|
+
expect { encode_avro(schema, response) }.to_not raise_error
|
102
|
+
encoded_response = encode_avro(schema, response)
|
103
|
+
|
104
|
+
expect { decode_avro(schema, encoded_response) }.to_not raise_error
|
105
|
+
decode_avro(schema, encoded_response).tap do |decoded|
|
106
|
+
expect(decoded['protocol']).to eq(response['protocol'])
|
107
|
+
expect(decoded['status_code']).to eq(response['status_code'])
|
108
|
+
expect(decoded['status_reason_phrase']).to eq(response['status_reason_phrase'])
|
109
|
+
expect(decoded['headers']['header1']).to eq(response['headers']['header1'])
|
110
|
+
expect(decoded['content']).to eq(response['content'])
|
111
|
+
end
|
112
|
+
end
|
61
113
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rflow-components-http
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael L. Artz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rflow
|
@@ -149,8 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
149
|
- !ruby/object:Gem::Version
|
150
150
|
version: '0'
|
151
151
|
requirements: []
|
152
|
-
|
153
|
-
rubygems_version: 2.5.1
|
152
|
+
rubygems_version: 3.0.6
|
154
153
|
signing_key:
|
155
154
|
specification_version: 4
|
156
155
|
summary: HTTP client and server components for the RFlow FBP framework
|