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: c1b76ea55a51799658ab7d9838a5f0c59fd6928e62907093fe5082962db45633
4
- data.tar.gz: d4af58357d2c2acf313ce20aba89c3ba4133214a630bcbca237850718d4ed030
3
+ metadata.gz: e259d3cffa653715457b5ecae02b116b4ab063bb837828370ac87d5ae5ec6c70
4
+ data.tar.gz: 3e4044515e54d35934d1fa90be3c518c5baee318fe7c01f8237dfb0411076f39
5
5
  SHA512:
6
- metadata.gz: 3f356e2d520ec0b4403b900699895b4af175e94860cb6e7d9dd402298d9e299c3f71f68e2cafb2af282011f4d9d15f933832b4643394999b8979cf96b2dc9c33
7
- data.tar.gz: 948892bbb053c697a59bd5efa9c8aafa99425a1b401d88b044e7d2a274e4c373f8e13af478b99785dbd41700ae9cb62d459480f4b771ebfb020a4262935787c0
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
- if @indexed
115
- keys.each do |key|
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
- if @indexed
129
- # It would be good to do some kind of validation here.
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, version = HTTP11, persistent = true)
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[HOST], method, path, version, headers, body
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[TRANSFER_ENCODING]
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[CONTENT_LENGTH]
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)
@@ -24,8 +24,8 @@ module HTTP
24
24
  module Protocol
25
25
  module HTTP2
26
26
  class Client < Connection
27
- def initialize(framer, *args)
28
- super(framer, 1, *args)
27
+ def initialize(framer)
28
+ super(framer, 1)
29
29
  end
30
30
 
31
31
  def send_connection_preface(settings = nil)
@@ -24,8 +24,8 @@ module HTTP
24
24
  module Protocol
25
25
  module HTTP2
26
26
  class Server < Connection
27
- def initialize(framer, *args)
28
- super(framer, 2, *args)
27
+ def initialize(framer)
28
+ super(framer, 2)
29
29
  end
30
30
 
31
31
  def read_connection_preface(settings)
@@ -20,6 +20,6 @@
20
20
 
21
21
  module HTTP
22
22
  module Protocol
23
- VERSION = "0.6.2"
23
+ VERSION = "0.8.0"
24
24
  end
25
25
  end
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.6.2
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-25 00:00:00.000000000 Z
11
+ date: 2018-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http-hpack