http_event_logger 0.1.0.rc2 → 0.1.0.rc3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de9d42502d6b49be918870c4d4d7cc56d34409a2
|
4
|
+
data.tar.gz: 3354bf5b60ff429421f73af05b5132b23f5551fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1cb7fff0c4f5aa0d589d3129c8c368fcc0a3984337b7b9eba02f58cec8f2814e23bd49335d59bb3832b4475cb23e334171ba2a07ad4a792809665c3e43355cf8
|
7
|
+
data.tar.gz: c28540272e0a389fec2d13cb1edfac6397182dd8373cb621873a7412e4ad6631312c3ef75dbca4fe0a0d6127cd07656682f90e1a7265add2fa7684bbbfe2263a
|
@@ -4,7 +4,7 @@ module HttpEventLogger
|
|
4
4
|
class Headers
|
5
5
|
|
6
6
|
def initialize(headers)
|
7
|
-
@headers = headers
|
7
|
+
@headers = headers.is_a?(Hash) ? headers : to_hash_if_possible(headers)
|
8
8
|
end
|
9
9
|
|
10
10
|
def [](name)
|
@@ -12,11 +12,22 @@ module HttpEventLogger
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def to_s
|
15
|
-
@headers.is_a?(
|
15
|
+
@headers.is_a?(Hash) ? @headers.map { |key, value| "#{key}: #{value}" }.join(", ") : @headers
|
16
16
|
end
|
17
17
|
|
18
18
|
private
|
19
19
|
|
20
|
+
def to_hash_if_possible(headers)
|
21
|
+
if headers.respond_to?(:reduce)
|
22
|
+
headers.reduce({}) do |hash, header|
|
23
|
+
hash[header[0]] = header[1]
|
24
|
+
hash
|
25
|
+
end
|
26
|
+
else
|
27
|
+
headers
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
20
31
|
def header_value_for(name)
|
21
32
|
header = @headers.find { |key, value| key.downcase == name.downcase }
|
22
33
|
header ? header[1] : nil
|
@@ -44,6 +44,48 @@ describe HttpEventLogger::Event::Headers do
|
|
44
44
|
|
45
45
|
end
|
46
46
|
|
47
|
+
context "when an enumerable is provided" do
|
48
|
+
|
49
|
+
let(:provided_headers) { [ [ "some_key", "some value" ], [ "some_other_key", "some other value" ] ].to_enum }
|
50
|
+
|
51
|
+
describe "#[]" do
|
52
|
+
|
53
|
+
context "and the name provided exactly matches a header name" do
|
54
|
+
|
55
|
+
it "returns the value of the header" do
|
56
|
+
expect(headers["some_key"]).to eql("some value")
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
context "and the name provided is a case insensitive match for a header name" do
|
62
|
+
|
63
|
+
it "returns the value of the header" do
|
64
|
+
expect(headers["Some_Key"]).to eql("some value")
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
context "and the the name provided does not match a header name" do
|
70
|
+
|
71
|
+
it "returns nil" do
|
72
|
+
expect(headers["does_not_match"]).to eql(nil)
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "#to_s" do
|
80
|
+
|
81
|
+
it "returns a string containing all header keys and values" do
|
82
|
+
expect(headers.to_s).to eql("some_key: some value, some_other_key: some other value")
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
|
47
89
|
context "when a string is provided" do
|
48
90
|
|
49
91
|
let(:provided_headers) { "some_key some value" }
|