http_headers-utils 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -1
- data/Gemfile.lock +1 -1
- data/lib/http_headers/utils.rb +2 -0
- data/lib/http_headers/utils/list.rb +21 -28
- data/lib/http_headers/utils/single.rb +23 -0
- data/lib/http_headers/utils/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7f3ae6d09938a47e48e9459736fe03829cb53d05c2e4d67dfac7ce7c91b853b
|
4
|
+
data.tar.gz: 464ef40919624f9d2e40ba66bc190649e9b87a3dc20c1ef4bea7d1b862e8ff8e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54ed03eadbe9b7d7c658d2083413c607f8c8ecbc60c6248d7787c59f877349cbed77c393d9f4391b1b5dbd5fac357acf05e0309b56e99cf9a2ce69c8b6b72faf
|
7
|
+
data.tar.gz: 53a3145d07bc953cc0d04a1e665b0da0b61ab3e56c11ae1f4024824384c851f1b8249777c8753ea7c656e0f244e5711796aa72653e0753f20d8fc705d599318c
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,17 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.2.0
|
4
|
+
|
5
|
+
- Fix whitespace on input by using `strip`
|
6
|
+
- Change `List` from `class` to `module`
|
7
|
+
- Change `List.new` to automatically sort
|
8
|
+
- Add `Single` for a single header value
|
9
|
+
- Add `to_header` lookup and implementation for `Single` and `List`
|
10
|
+
- Change `to_header` to use `HEADER_DELIMITER`
|
11
|
+
|
3
12
|
## 0.1.1
|
4
13
|
|
5
|
-
Add a missing require to `delegate`
|
14
|
+
- Add a missing require to `delegate`
|
6
15
|
|
7
16
|
## 0.1.0
|
8
17
|
|
data/Gemfile.lock
CHANGED
data/lib/http_headers/utils.rb
CHANGED
@@ -1,15 +1,12 @@
|
|
1
|
-
require 'delegate'
|
2
|
-
|
3
1
|
module HttpHeaders
|
4
2
|
module Utils
|
5
3
|
|
6
4
|
##
|
7
5
|
# @example Accept values
|
8
6
|
#
|
9
|
-
# class Accept <
|
7
|
+
# class Accept < DelegateClass(Array)
|
10
8
|
# def initialize(value)
|
11
|
-
# super value, entry_klazz: Accept::Entry
|
12
|
-
# sort!
|
9
|
+
# super HttpHeaders::List.new(value, entry_klazz: Accept::Entry)
|
13
10
|
# end
|
14
11
|
#
|
15
12
|
# class Entry
|
@@ -32,39 +29,35 @@ module HttpHeaders
|
|
32
29
|
# Accept.new(['*/*; q=0.1', 'application/json, text/html; q=0.8'])
|
33
30
|
# # => List['application/json', 'text/html', '*/*']
|
34
31
|
#
|
35
|
-
|
36
|
-
|
32
|
+
module List
|
37
33
|
HEADER_DELIMITER = ','
|
38
34
|
PARAMETER_DELIMITER = ';'
|
39
35
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
36
|
+
module_function
|
37
|
+
|
38
|
+
def parse(combined, entry_klazz:)
|
39
|
+
Array(combined).map { |line| line.split(HEADER_DELIMITER) }.flatten.each_with_index.map do |entry, index|
|
40
|
+
value, *parameters = entry.strip.split(PARAMETER_DELIMITER)
|
41
|
+
indexed_parameters = Hash[Array(parameters).map { |p| p.strip.split('=') }].transform_keys!(&:to_sym)
|
42
|
+
entry_klazz.new(value, index: index, parameters: indexed_parameters)
|
47
43
|
end
|
48
44
|
end
|
49
45
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
# @param value [String] the header value
|
54
|
-
# @param entry_klazz [Class] the class for the list items
|
55
|
-
#
|
56
|
-
# @see List.parse
|
57
|
-
#
|
58
|
-
def initialize(value, entry_klazz:)
|
59
|
-
super List.parse(value, entry_klazz: entry_klazz)
|
46
|
+
def new(combined, entry_klazz:)
|
47
|
+
result = parse(combined, entry_klazz: entry_klazz)
|
48
|
+
entry_klazz.instance_methods(false).include?(:<=>) ? result.sort! : result
|
60
49
|
end
|
61
50
|
|
62
|
-
def
|
63
|
-
|
51
|
+
def to_header(list)
|
52
|
+
# noinspection RubyBlockToMethodReference
|
53
|
+
list.map { |entry| stringify_entry(entry) }
|
54
|
+
.join("#{HEADER_DELIMITER} ")
|
64
55
|
end
|
65
56
|
|
66
|
-
def
|
67
|
-
|
57
|
+
def stringify_entry(entry)
|
58
|
+
return entry.to_header if entry.respond_to?(:to_header)
|
59
|
+
return entry.to_s if entry.respond_to?(:to_s)
|
60
|
+
entry.inspect
|
68
61
|
end
|
69
62
|
end
|
70
63
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'http_headers/utils/list'
|
2
|
+
|
3
|
+
module HttpHeaders
|
4
|
+
module Utils
|
5
|
+
module Single
|
6
|
+
module_function
|
7
|
+
|
8
|
+
def parse(value, entry_klazz:)
|
9
|
+
List.new(value, entry_klazz: entry_klazz).last
|
10
|
+
end
|
11
|
+
|
12
|
+
def new(*args)
|
13
|
+
parse(*args)
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_header(single)
|
17
|
+
List.stringify_entry(single)
|
18
|
+
end
|
19
|
+
|
20
|
+
alias new parse
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: http_headers-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derk-Jan Karrenbeld
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-02-
|
11
|
+
date: 2019-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -80,6 +80,7 @@ files:
|
|
80
80
|
- http_headers-utils.gemspec
|
81
81
|
- lib/http_headers/utils.rb
|
82
82
|
- lib/http_headers/utils/list.rb
|
83
|
+
- lib/http_headers/utils/single.rb
|
83
84
|
- lib/http_headers/utils/version.rb
|
84
85
|
homepage: https://github.com/XPBytes/http_headers-utils
|
85
86
|
licenses:
|