http_objects 0.0.2 → 0.0.3
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.
data/lib/http_objects/hash.rb
CHANGED
@@ -21,7 +21,8 @@ module HttpObjects
|
|
21
21
|
|
22
22
|
# Public: Register attribute class with *MethodCreator* block.
|
23
23
|
def self.add_attribute(attr_class)
|
24
|
-
|
24
|
+
key = normalize_key(attr_class.header_name)
|
25
|
+
register_attribute(key, attr_class, &MethodCreator)
|
25
26
|
end
|
26
27
|
|
27
28
|
def self.new(hash = nil)
|
@@ -39,6 +40,7 @@ module HttpObjects
|
|
39
40
|
# key - key or HTTP Header name.
|
40
41
|
# value - object. If key is HTTP Header name, value should be a String.
|
41
42
|
def []=(key, value)
|
43
|
+
key = self.class.normalize_key(key)
|
42
44
|
if (header_class = self.class.attributes[key])
|
43
45
|
value = header_class.parse(value)
|
44
46
|
end
|
@@ -47,11 +49,25 @@ module HttpObjects
|
|
47
49
|
alias :store :[]=
|
48
50
|
|
49
51
|
def [](key)
|
52
|
+
key = self.class.normalize_key(key)
|
50
53
|
value = self.fetch(key, nil)
|
51
54
|
value = value.raw if value.respond_to?(:raw)
|
52
55
|
value
|
53
56
|
end
|
54
57
|
|
58
|
+
def to_s
|
59
|
+
self.keys.inject("") do |out, key|
|
60
|
+
out << ", " unless out.empty?
|
61
|
+
out << "#{key}: #{self[key]}"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
protected
|
66
|
+
|
67
|
+
def self.normalize_key(key)
|
68
|
+
key.downcase if key.respond_to?(:downcase)
|
69
|
+
end
|
70
|
+
|
55
71
|
end
|
56
72
|
|
57
73
|
end
|
data/lib/http_objects/version.rb
CHANGED
@@ -81,4 +81,17 @@ describe HttpObjects::Hash do
|
|
81
81
|
subject.myobject!.must_equal("value")
|
82
82
|
end
|
83
83
|
|
84
|
+
it "keys, be case insensitive" do
|
85
|
+
subject["My-Key"] = "value"
|
86
|
+
subject["my-key"].must_equal("value")
|
87
|
+
end
|
88
|
+
|
89
|
+
it "#to_s" do
|
90
|
+
subject["My-Key"] = "value"
|
91
|
+
subject["MyObject"] = "myvalue"
|
92
|
+
|
93
|
+
hash_in_rb18_sucks = /(my-key: value, myobject: myvalue)|(myobject: myvalue, my-key: value)/
|
94
|
+
subject.to_s.must_match(hash_in_rb18_sucks)
|
95
|
+
end
|
96
|
+
|
84
97
|
end
|
@@ -30,4 +30,25 @@ describe MediaType do
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
+
describe "#charset" do
|
34
|
+
describe "with value" do
|
35
|
+
subject { MediaType.parse("application/xhtml+xml; charset=ISO-8859-4") }
|
36
|
+
it "#charset?" do
|
37
|
+
subject.charset?.must_equal(true)
|
38
|
+
end
|
39
|
+
it "#charset!" do
|
40
|
+
subject.charset!.must_equal("ISO-8859-4")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
describe "without value" do
|
44
|
+
subject { MediaType.parse("application/xhtml+xml") }
|
45
|
+
it "#charset?" do
|
46
|
+
subject.charset?.must_equal(false)
|
47
|
+
end
|
48
|
+
it "#charset!" do
|
49
|
+
subject.charset!.must_be_nil
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
33
54
|
end
|
metadata
CHANGED
@@ -1,76 +1,56 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: http_objects
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 2
|
10
|
-
version: 0.0.2
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Roger Leite
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-12-27 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: rake
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70157426897660 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
32
22
|
type: :development
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: minitest
|
36
23
|
prerelease: false
|
37
|
-
|
24
|
+
version_requirements: *70157426897660
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: minitest
|
27
|
+
requirement: &70157426896300 !ruby/object:Gem::Requirement
|
38
28
|
none: false
|
39
|
-
requirements:
|
29
|
+
requirements:
|
40
30
|
- - ~>
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
|
43
|
-
segments:
|
44
|
-
- 3
|
45
|
-
version: "3"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3'
|
46
33
|
type: :development
|
47
|
-
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: minitest-reporters
|
50
34
|
prerelease: false
|
51
|
-
|
35
|
+
version_requirements: *70157426896300
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: minitest-reporters
|
38
|
+
requirement: &70157426895080 !ruby/object:Gem::Requirement
|
52
39
|
none: false
|
53
|
-
requirements:
|
40
|
+
requirements:
|
54
41
|
- - ~>
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
hash: 3
|
57
|
-
segments:
|
58
|
-
- 0
|
59
|
-
- 7
|
60
|
-
- 0
|
42
|
+
- !ruby/object:Gem::Version
|
61
43
|
version: 0.7.0
|
62
44
|
type: :development
|
63
|
-
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70157426895080
|
64
47
|
description: HTTP 1.1 by the spec, specially headers
|
65
|
-
email:
|
48
|
+
email:
|
66
49
|
- roger.barreto@gmail.com
|
67
50
|
executables: []
|
68
|
-
|
69
51
|
extensions: []
|
70
|
-
|
71
52
|
extra_rdoc_files: []
|
72
|
-
|
73
|
-
files:
|
53
|
+
files:
|
74
54
|
- .gitignore
|
75
55
|
- Gemfile
|
76
56
|
- LICENSE
|
@@ -133,38 +113,29 @@ files:
|
|
133
113
|
- test/test_helper.rb
|
134
114
|
homepage: https://github.com/rogerleite/http_objects
|
135
115
|
licenses: []
|
136
|
-
|
137
116
|
post_install_message:
|
138
117
|
rdoc_options: []
|
139
|
-
|
140
|
-
require_paths:
|
118
|
+
require_paths:
|
141
119
|
- lib
|
142
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
120
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
143
121
|
none: false
|
144
|
-
requirements:
|
145
|
-
- -
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
|
148
|
-
|
149
|
-
- 0
|
150
|
-
version: "0"
|
151
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
127
|
none: false
|
153
|
-
requirements:
|
154
|
-
- -
|
155
|
-
- !ruby/object:Gem::Version
|
156
|
-
|
157
|
-
segments:
|
158
|
-
- 0
|
159
|
-
version: "0"
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
160
132
|
requirements: []
|
161
|
-
|
162
133
|
rubyforge_project:
|
163
134
|
rubygems_version: 1.8.15
|
164
135
|
signing_key:
|
165
136
|
specification_version: 3
|
166
137
|
summary: HTTP 1.1 by the spec, specially headers
|
167
|
-
test_files:
|
138
|
+
test_files:
|
168
139
|
- test/http_objects/hash_test.rb
|
169
140
|
- test/http_objects/headers/attributes_test.rb
|
170
141
|
- test/http_objects/headers/directives/cache_test.rb
|