http-protocol 0.6.2 → 0.8.0
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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e259d3cffa653715457b5ecae02b116b4ab063bb837828370ac87d5ae5ec6c70
|
4
|
+
data.tar.gz: 3e4044515e54d35934d1fa90be3c518c5baee318fe7c01f8237dfb0411076f39
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8eeddbf50275851a6aa5958cf9efc0f07a004c438b0ef6eb8780819ac1ff5816736d7c0214adbec05d2e387c89f8e3e6077e93913369cac5858139e9168c52b0
|
7
|
+
data.tar.gz: c05014726647a9fe13f716d119e578f7793e22d496ab29670a3523d5b65cdaed8e5c67114e6614e9c04a41274c2e58cadb2752b89c5e3d73ab33c74e1684f473
|
@@ -91,30 +91,13 @@ module HTTP
|
|
91
91
|
self[key] != nil
|
92
92
|
end
|
93
93
|
|
94
|
-
# Delete all headers with the given key, and return the value of the last one, if any.
|
95
|
-
def delete(key)
|
96
|
-
values, @fields = @fields.partition do |field|
|
97
|
-
field.first.downcase == key
|
98
|
-
end
|
99
|
-
|
100
|
-
if @indexed
|
101
|
-
@indexed.delete(key)
|
102
|
-
end
|
103
|
-
|
104
|
-
if field = values.last
|
105
|
-
return field.last
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
94
|
def slice!(keys)
|
110
95
|
values, @fields = @fields.partition do |field|
|
111
96
|
keys.include?(field.first.downcase)
|
112
97
|
end
|
113
98
|
|
114
|
-
|
115
|
-
|
116
|
-
@indexed.delete(key)
|
117
|
-
end
|
99
|
+
keys.each do |key|
|
100
|
+
@indexed.delete(key)
|
118
101
|
end
|
119
102
|
end
|
120
103
|
|
@@ -125,10 +108,8 @@ module HTTP
|
|
125
108
|
def []= key, value
|
126
109
|
@fields << [key, value]
|
127
110
|
|
128
|
-
|
129
|
-
|
130
|
-
merge(@indexed, key.downcase, value)
|
131
|
-
end
|
111
|
+
# It would be good to do some kind of validation here.
|
112
|
+
merge(@indexed, key.downcase, value)
|
132
113
|
end
|
133
114
|
|
134
115
|
MERGE_POLICY = {
|
@@ -159,6 +140,15 @@ module HTTP
|
|
159
140
|
'proxy-authenticate' => Multiple
|
160
141
|
}.tap{|hash| hash.default = Split}
|
161
142
|
|
143
|
+
# Delete all headers with the given key, and return the merged value.
|
144
|
+
def delete(key)
|
145
|
+
values, @fields = @fields.partition do |field|
|
146
|
+
field.first.downcase == key
|
147
|
+
end
|
148
|
+
|
149
|
+
return @indexed.delete(key)
|
150
|
+
end
|
151
|
+
|
162
152
|
def merge(hash, key, value)
|
163
153
|
if policy = MERGE_POLICY[key]
|
164
154
|
if current_value = hash[key]
|
@@ -175,8 +165,6 @@ module HTTP
|
|
175
165
|
end
|
176
166
|
|
177
167
|
def [] key
|
178
|
-
@indexed ||= to_h
|
179
|
-
|
180
168
|
@indexed[key]
|
181
169
|
end
|
182
170
|
|
@@ -28,10 +28,9 @@ module HTTP
|
|
28
28
|
HTTP10 = "HTTP/1.0".freeze
|
29
29
|
HTTP11 = "HTTP/1.1".freeze
|
30
30
|
|
31
|
-
def initialize(stream,
|
31
|
+
def initialize(stream, persistent = true)
|
32
32
|
@stream = stream
|
33
33
|
|
34
|
-
@version = version
|
35
34
|
@persistent = persistent
|
36
35
|
|
37
36
|
@count = 0
|
@@ -39,9 +38,6 @@ module HTTP
|
|
39
38
|
|
40
39
|
attr :stream
|
41
40
|
|
42
|
-
# The default HTTP version to use (if none specified).
|
43
|
-
attr :version
|
44
|
-
|
45
41
|
# Whether the connection is persistent.
|
46
42
|
attr :persistent
|
47
43
|
|
@@ -145,12 +141,11 @@ module HTTP
|
|
145
141
|
|
146
142
|
@count += 1
|
147
143
|
|
148
|
-
return headers
|
144
|
+
return headers.delete(HOST), method, path, version, headers, body
|
149
145
|
end
|
150
146
|
|
151
147
|
def read_response(method)
|
152
148
|
version, status, reason = read_line.split(/\s+/, 3)
|
153
|
-
Async.logger.debug(self) {"#{version} #{status} #{reason}"}
|
154
149
|
|
155
150
|
headers = read_headers
|
156
151
|
|
@@ -357,7 +352,7 @@ module HTTP
|
|
357
352
|
# transfer coding (Section 4.1) is the final encoding, the message
|
358
353
|
# body length is determined by reading and decoding the chunked
|
359
354
|
# data until the transfer coding indicates the data is complete.
|
360
|
-
if transfer_encoding = headers
|
355
|
+
if transfer_encoding = headers.delete(TRANSFER_ENCODING)
|
361
356
|
# If a message is received with both a Transfer-Encoding and a
|
362
357
|
# Content-Length header field, the Transfer-Encoding overrides the
|
363
358
|
# Content-Length. Such a message might indicate an attempt to
|
@@ -390,7 +385,7 @@ module HTTP
|
|
390
385
|
# the recipient times out before the indicated number of octets are
|
391
386
|
# received, the recipient MUST consider the message to be
|
392
387
|
# incomplete and close the connection.
|
393
|
-
if content_length = headers
|
388
|
+
if content_length = headers.delete(CONTENT_LENGTH)
|
394
389
|
length = Integer(content_length)
|
395
390
|
if length >= 0
|
396
391
|
return read_fixed_body(length)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: http-protocol
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http-hpack
|