http_link_header 0.1.0 → 0.2.0

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.
@@ -0,0 +1,20 @@
1
+ # HttpLinkHeader
2
+
3
+ Parses and generates HTTP Link headers as defined by
4
+ [IETF RFC 5988](http://tools.ietf.org/html/rfc5988).
5
+
6
+ <dl>
7
+ <dt>Author</dt>
8
+ <dd>Clyde Law (mailto:claw@alum.mit.edu)</dd>
9
+
10
+ <dt>License</dt>
11
+ <dd>Released under the MIT license</dd>
12
+ </dl>
13
+
14
+ ## Changelog
15
+
16
+ ### v0.2.0
17
+ * Fix ruby 2.0 compat (#1 - @urkle)
18
+
19
+ ### v0.1.0
20
+ * Initial version
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -18,4 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
+
22
+ s.add_development_dependency "rake", "~> 10.0"
23
+ s.add_development_dependency "rspec", "~> 3.4"
21
24
  end
@@ -1,6 +1,8 @@
1
+ require 'set'
2
+
1
3
  class HttpLinkHeader::HttpLinkParams < ::Hash
2
4
  DELIMETER = ';'
3
- RELATION_TYPE_ATTRIBUTES = Set['rel', 'rev']
5
+ RELATION_TYPE_ATTRIBUTES = ::Set['rel', 'rev']
4
6
 
5
7
  class RelationTypes < ::Set
6
8
 
@@ -8,6 +10,7 @@ class HttpLinkHeader::HttpLinkParams < ::Hash
8
10
  if relation_types.is_a?(Enumerable)
9
11
  super(relation_types)
10
12
  elsif relation_types.is_a?(String)
13
+ super()
11
14
  add(relation_types)
12
15
  else
13
16
  raise ArgumentError, "invalid relation-types: #{relation_types}"
@@ -1,3 +1,3 @@
1
1
  class HttpLinkHeader < ::Hash
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe HttpLinkHeader do
4
+ let(:url) { 'http://example.com/?page=1' }
5
+ let(:rel_types) { 'next' }
6
+ let(:link) { "<#{url}>; rel=\"#{rel_types}\"" }
7
+
8
+ describe 'add' do
9
+ it 'should add the link' do
10
+ expect {
11
+ subject.add(link)
12
+ }.to change {subject.length}.by(1)
13
+ end
14
+
15
+ it 'should add the url to []' do
16
+ expect {
17
+ subject.add(link)
18
+ }.to change {subject[url]}.from(nil)
19
+ end
20
+
21
+ it 'the added url should point to an HttpLinkParam object' do
22
+ subject.add(link)
23
+
24
+ expect(subject[url]).to be_a(HttpLinkHeader::HttpLinkParams)
25
+ end
26
+
27
+ it 'the link params should have the rel relation' do
28
+ subject.add(link)
29
+
30
+ expect(subject[url][:rel]).to be_a(HttpLinkHeader::HttpLinkParams::RelationTypes)
31
+ end
32
+ end
33
+
34
+ describe '#rel' do
35
+ it 'should find the url by rel type' do
36
+ subject.add(link)
37
+
38
+ expect(subject.rel('next')).to eq(url)
39
+ end
40
+
41
+ context 'with multiple rel types' do
42
+ let(:rel_types) { 'next last' }
43
+
44
+ it 'should find the url by the next type' do
45
+ subject.add(link)
46
+
47
+ expect(subject.rel('next')).to eq(url)
48
+ end
49
+
50
+ it 'should find the url by the last type' do
51
+ subject.add(link)
52
+
53
+ expect(subject.rel('last')).to eq(url)
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,18 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'http_link_header'
3
+
4
+ RSpec.configure do |config|
5
+ config.expect_with :rspec do |expectations|
6
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
7
+ end
8
+
9
+ config.mock_with :rspec do |mocks|
10
+ mocks.verify_partial_doubles = true
11
+ end
12
+
13
+ config.disable_monkey_patching!
14
+
15
+ config.order = :random
16
+
17
+ Kernel.srand config.seed
18
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http_link_header
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 0.1.0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Clyde Law
@@ -15,10 +15,38 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-03-12 00:00:00 -07:00
19
- default_executable:
20
- dependencies: []
21
-
18
+ date: 2016-07-29 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ type: :development
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ hash: 35
28
+ segments:
29
+ - 10
30
+ - 0
31
+ version: "10.0"
32
+ name: rake
33
+ version_requirements: *id001
34
+ prerelease: false
35
+ - !ruby/object:Gem::Dependency
36
+ type: :development
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ hash: 15
43
+ segments:
44
+ - 3
45
+ - 4
46
+ version: "3.4"
47
+ name: rspec
48
+ version_requirements: *id002
49
+ prerelease: false
22
50
  description: Parses and generates HTTP Link headers as defined by IETF RFC 5988.
23
51
  email:
24
52
  - claw@alum.mit.edu
@@ -31,13 +59,14 @@ extra_rdoc_files: []
31
59
  files:
32
60
  - .gitignore
33
61
  - Gemfile
34
- - README.rdoc
62
+ - README.md
35
63
  - Rakefile
36
64
  - http_link_header.gemspec
37
65
  - lib/http_link_header.rb
38
66
  - lib/http_link_header/http_link_params.rb
39
67
  - lib/http_link_header/version.rb
40
- has_rdoc: true
68
+ - spec/lib/http_link_header_spec.rb
69
+ - spec/spec_helper.rb
41
70
  homepage: http://github.com/Umofomia/http_link_header
42
71
  licenses:
43
72
  - MIT
@@ -67,9 +96,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
96
  requirements: []
68
97
 
69
98
  rubyforge_project: http_link_header
70
- rubygems_version: 1.6.2
99
+ rubygems_version: 1.8.30
71
100
  signing_key:
72
101
  specification_version: 3
73
102
  summary: Parses and generates HTTP Link headers as defined by IETF RFC 5988.
74
- test_files: []
75
-
103
+ test_files:
104
+ - spec/lib/http_link_header_spec.rb
105
+ - spec/spec_helper.rb
@@ -1,7 +0,0 @@
1
- = HttpLinkHeader
2
-
3
- Parses and generates HTTP Link headers as defined by
4
- {IETF RFC 5988}[http://tools.ietf.org/html/rfc5988].
5
-
6
- Author:: Clyde Law (mailto:claw@alum.mit.edu)
7
- License:: Released under the MIT license