Class: HttpLinkHeader
- Inherits:
-
Hash
- Object
- Hash
- HttpLinkHeader
- Defined in:
- lib/http_link_header.rb,
lib/http_link_header/version.rb
Defined Under Namespace
Classes: HttpLinkParams
Constant Summary collapse
- DELIMETER =
','- VERSION =
"0.2.0"
Instance Method Summary collapse
- #[](uri_reference) ⇒ Object
- #[]=(uri_reference, link_params) ⇒ Object
- #add(link_value) ⇒ Object
-
#initialize(link_header = []) ⇒ HttpLinkHeader
constructor
A new instance of HttpLinkHeader.
- #to_a ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(link_header = []) ⇒ HttpLinkHeader
Returns a new instance of HttpLinkHeader.
7 8 9 10 |
# File 'lib/http_link_header.rb', line 7 def initialize(link_header = []) link_header = link_header.split(DELIMETER) if link_header.is_a?(String) link_header.each { |link_value| add(link_value) } end |
Instance Method Details
#[](uri_reference) ⇒ Object
12 13 14 |
# File 'lib/http_link_header.rb', line 12 def [](uri_reference) super(uri_reference.to_s) end |
#[]=(uri_reference, link_params) ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/http_link_header.rb', line 16 def []=(uri_reference, link_params) link_params = nil if link_params && link_params.empty? if self[uri_reference] self[uri_reference].add(link_params) unless link_params.nil? else super(uri_reference.to_s, link_params.nil? ? nil : HttpLinkParams.new(link_params)) end end |
#add(link_value) ⇒ Object
25 26 27 28 29 30 31 32 |
# File 'lib/http_link_header.rb', line 25 def add(link_value) if link_value_match = link_value.strip.match(/\A<([^>]+)>\s*(;\s*(.*))?\z/) uri_reference, link_params = link_value_match.values_at(1, 3) self[uri_reference.strip] = link_params ? link_params.strip : nil else raise ArgumentError, "invalid link-value: #{link_value}" end end |
#to_a ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/http_link_header.rb', line 34 def to_a map do |uri_reference, link_params| link_value = "<#{uri_reference}>" link_value << "#{HttpLinkParams::DELIMETER} #{link_params.to_s}" if link_params && !link_params.empty? link_value end end |
#to_s ⇒ Object
42 43 44 |
# File 'lib/http_link_header.rb', line 42 def to_s to_a.join("#{DELIMETER} ") end |