http-protocol 0.13.0 → 0.14.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: 6a7da4c00bbe6c3eeb8c56f46f4d4e78ff133f360b11396229b620873c33c35b
4
- data.tar.gz: b822849d7f1614eab1a469d446569ac5456a7b3921f2fa2402a89deb2fdc2a88
3
+ metadata.gz: c88f948d7e13dd7114fc7f83b002035a6fa5229b15756fcad9edc92e9ac14ad9
4
+ data.tar.gz: ef513cdd8c0ad42a5ac9cc7e24f37ce2540abe8e4e041ca04322d61de656192c
5
5
  SHA512:
6
- metadata.gz: 9e3856fed9a60a1793b0dbcfc08d860b8e5a1b1d4a12b383cd64bee0775851068a18f56fd6c2c3d3afc5d60dda0810e93e5d45d579c603431196f81b5aef3df2
7
- data.tar.gz: 2fdb86e2258946bf0b92c15358817a56bea6b640f091f11903c1455f7f5fd5fa272d31135818612d661d7c9160eb765e5113b49867c15c1e575f5c0731dd2b8b
6
+ metadata.gz: '0694ce003550f943c96bcbe8a8b9dc5e1bc387f496bf7feb07bc5e7614f43f2bdd3745c6709327e3b073d466cdb33f1fa8cb73259c994c02d986d5afe9663ef3'
7
+ data.tar.gz: d21bb4ab8fdbeacecc4772d5108f7e5ae79878b7ea6b5fc51b15a89eff6f766e6910e7fc72472d2f3b1213f29fb6556f665045a1cfb5510248c6d6cf8eb23e3e
@@ -78,13 +78,11 @@ module HTTP
78
78
  name.scan(/([^\[]+)|(?:\[(.*?)\])/).flatten!.compact!
79
79
  end
80
80
 
81
- def self.assign(name, value, parent)
82
- top, *middle = self.split(name)
83
-
84
- yield(top, middle) if block_given?
81
+ def self.assign(keys, value, parent)
82
+ top, *middle = keys
85
83
 
86
84
  middle.each_with_index do |key, index|
87
- if key.empty?
85
+ if key.nil? or key.empty?
88
86
  parent = (parent[top] ||= Array.new)
89
87
  top = parent.size
90
88
 
@@ -100,15 +98,21 @@ module HTTP
100
98
  parent[top] = value
101
99
  end
102
100
 
103
- def self.decode(string, maximum = 8)
101
+ def self.decode(string, maximum = 8, symbolize_keys: false)
104
102
  parameters = {}
105
103
 
106
- self.scan(string) do |key, value|
107
- self.assign(key, value, parameters) do |top, middle|
108
- if maximum and middle.count > maximum
109
- raise ArgumentError, "Key length exceeded limit!"
110
- end
104
+ self.scan(string) do |name, value|
105
+ keys = self.split(name)
106
+
107
+ if keys.count > maximum
108
+ raise ArgumentError, "Key length exceeded limit!"
111
109
  end
110
+
111
+ if symbolize_keys
112
+ keys.collect!{|key| key.empty? ? nil : key.to_sym}
113
+ end
114
+
115
+ self.assign(keys, value, parameters)
112
116
  end
113
117
 
114
118
  return parameters
@@ -20,6 +20,6 @@
20
20
 
21
21
  module HTTP
22
22
  module Protocol
23
- VERSION = "0.13.0"
23
+ VERSION = "0.14.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.13.0
4
+ version: 0.14.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: 2019-02-07 00:00:00.000000000 Z
11
+ date: 2019-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http-hpack