footrest 0.4.1 → 0.5.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2d9f5d760ae83f164678724a9ecfd76f4df5336e
4
+ data.tar.gz: ed689789278afacb33efde02088ee327a10eb67f
5
+ SHA512:
6
+ metadata.gz: 45bec9c171db1ada2ae5705b75a17cf1631aaba8b06649213d1b385fbcbf30e46f4975fd0ff4721f86beea111e5e887dc8e357c6ec50162e6d6f6db2102953b9
7
+ data.tar.gz: cd1533a1211613833447f82887c859cfcff40aeb9c3fcaf61456258ecc3027734d7793c2ef317ce5388c89634f1c0108dde98ad559af8ec17565e50813413356
data/footrest.gemspec CHANGED
@@ -24,11 +24,6 @@ Gem::Specification.new do |gem|
24
24
  gem.add_development_dependency "rspec", "~> 2.6"
25
25
  gem.add_development_dependency "webmock"
26
26
  gem.add_development_dependency "pry"
27
- if RUBY_VERSION < '2.0'
28
- gem.add_development_dependency "debugger"
29
- else
30
- gem.add_development_dependency "byebug"
31
- end
32
27
 
33
28
  gem.add_dependency "faraday", "~> 0.9.0"
34
29
  gem.add_dependency "activesupport", ">= 3.0.0"
@@ -2,12 +2,26 @@ require 'link_header'
2
2
 
3
3
  module Footrest
4
4
  class Pagination < Faraday::Response::Middleware
5
+ Links = Struct.new(:first, :prev, :current, :next, :last) do
6
+ alias_method :previous, :prev
7
+ alias_method :prevous=, :prev=
8
+
9
+ def last_page?
10
+ return false unless self.current && self.last
11
+ self.current == self.last
12
+ end
13
+ end
14
+
5
15
  def on_complete(response)
6
16
  if response[:response_headers]
7
- if link = response[:response_headers][:link]
17
+ if link_header = response[:response_headers][:link]
18
+ links = Links.new
8
19
  %w(prev next first last current).each do |page|
9
- response["#{page}_page".to_sym] = find_link(link, page)
20
+ link = find_link(link_header, page)
21
+ response["#{page}_page".to_sym] = link
22
+ links.public_send("#{ page }=", link)
10
23
  end
24
+ response[:pagination_links] = links
11
25
  end
12
26
  end
13
27
  end
@@ -1,3 +1,3 @@
1
1
  module Footrest
2
- VERSION = '0.4.1' unless defined?(Footrest::VERSION)
3
- end
2
+ VERSION = '0.5.0' unless defined?(Footrest::VERSION)
3
+ end
@@ -1,20 +1,37 @@
1
- require_relative '../spec_helper'
1
+ require 'spec_helper'
2
2
 
3
- describe Footrest::Pagination do
3
+ module Footrest
4
+ describe Pagination do
4
5
 
5
- context "on_complete" do
6
- it 'captures prev, next, first, last, and current page links as response headers' do
7
- response = {
8
- response_headers: {
9
- link: "<current_link>; rel=\"current\",<next_link>; rel=\"next\",<prev_link>; rel=\"prev\",<first_link>; rel=\"first\",<last_link>; rel=\"last\""
6
+ describe "#on_complete" do
7
+ let(:response) {
8
+ {
9
+ response_headers: {
10
+ link: "<current_link>; rel=\"current\",<next_link>; rel=\"next\",<prev_link>; rel=\"prev\",<first_link>; rel=\"first\",<last_link>; rel=\"last\""
11
+ }
10
12
  }
11
13
  }
12
14
 
13
- Footrest::Pagination.new.on_complete(response)
15
+ before do
16
+ Pagination.new.on_complete(response)
17
+ end
18
+
19
+ it 'captures prev, next, first, last, and current page links as response headers' do
20
+ %w(prev next first last current).each do |page|
21
+ expect(response["#{page}_page".to_sym]).to eq("#{page}_link")
22
+ end
23
+ end
24
+
25
+ it 'must capture the pagination links in an object at the pagination_links key' do
26
+ expect(response[:pagination_links]).to be_a Pagination::Links
27
+ end
14
28
 
15
- %w(prev next first last current).each do |page|
16
- expect(response["#{page}_page".to_sym]).to eq("#{page}_link")
29
+ it 'must capture all of the link types in the Links object' do
30
+ obj = response[:pagination_links]
31
+ %w(prev next first last current).each do |page|
32
+ expect(obj.public_send(page)).to eq("#{page}_link")
33
+ end
17
34
  end
18
35
  end
19
36
  end
20
- end
37
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,7 @@
1
-
2
- require 'footrest'
3
1
  require 'rspec'
4
2
  require 'webmock/rspec'
5
- require 'json'
3
+
4
+ require 'footrest'
6
5
 
7
6
  WebMock.disable_net_connect!
8
7
 
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: footrest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
5
- prerelease:
4
+ version: 0.5.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Duane Johnson
@@ -10,150 +9,118 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2014-12-04 00:00:00.000000000 Z
12
+ date: 2014-12-22 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: rake
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ! '>='
18
+ - - ">="
21
19
  - !ruby/object:Gem::Version
22
20
  version: '0'
23
21
  type: :development
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ! '>='
25
+ - - ">="
29
26
  - !ruby/object:Gem::Version
30
27
  version: '0'
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: bundler
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ! '>='
32
+ - - ">="
37
33
  - !ruby/object:Gem::Version
38
34
  version: 1.0.0
39
35
  type: :development
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ! '>='
39
+ - - ">="
45
40
  - !ruby/object:Gem::Version
46
41
  version: 1.0.0
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: rspec
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
- - - ~>
46
+ - - "~>"
53
47
  - !ruby/object:Gem::Version
54
48
  version: '2.6'
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
- - - ~>
53
+ - - "~>"
61
54
  - !ruby/object:Gem::Version
62
55
  version: '2.6'
63
56
  - !ruby/object:Gem::Dependency
64
57
  name: webmock
65
58
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
59
  requirements:
68
- - - ! '>='
60
+ - - ">="
69
61
  - !ruby/object:Gem::Version
70
62
  version: '0'
71
63
  type: :development
72
64
  prerelease: false
73
65
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
66
  requirements:
76
- - - ! '>='
67
+ - - ">="
77
68
  - !ruby/object:Gem::Version
78
69
  version: '0'
79
70
  - !ruby/object:Gem::Dependency
80
71
  name: pry
81
72
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
73
  requirements:
84
- - - ! '>='
74
+ - - ">="
85
75
  - !ruby/object:Gem::Version
86
76
  version: '0'
87
77
  type: :development
88
78
  prerelease: false
89
79
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
80
  requirements:
92
- - - ! '>='
93
- - !ruby/object:Gem::Version
94
- version: '0'
95
- - !ruby/object:Gem::Dependency
96
- name: debugger
97
- requirement: !ruby/object:Gem::Requirement
98
- none: false
99
- requirements:
100
- - - ! '>='
101
- - !ruby/object:Gem::Version
102
- version: '0'
103
- type: :development
104
- prerelease: false
105
- version_requirements: !ruby/object:Gem::Requirement
106
- none: false
107
- requirements:
108
- - - ! '>='
81
+ - - ">="
109
82
  - !ruby/object:Gem::Version
110
83
  version: '0'
111
84
  - !ruby/object:Gem::Dependency
112
85
  name: faraday
113
86
  requirement: !ruby/object:Gem::Requirement
114
- none: false
115
87
  requirements:
116
- - - ~>
88
+ - - "~>"
117
89
  - !ruby/object:Gem::Version
118
90
  version: 0.9.0
119
91
  type: :runtime
120
92
  prerelease: false
121
93
  version_requirements: !ruby/object:Gem::Requirement
122
- none: false
123
94
  requirements:
124
- - - ~>
95
+ - - "~>"
125
96
  - !ruby/object:Gem::Version
126
97
  version: 0.9.0
127
98
  - !ruby/object:Gem::Dependency
128
99
  name: activesupport
129
100
  requirement: !ruby/object:Gem::Requirement
130
- none: false
131
101
  requirements:
132
- - - ! '>='
102
+ - - ">="
133
103
  - !ruby/object:Gem::Version
134
104
  version: 3.0.0
135
105
  type: :runtime
136
106
  prerelease: false
137
107
  version_requirements: !ruby/object:Gem::Requirement
138
- none: false
139
108
  requirements:
140
- - - ! '>='
109
+ - - ">="
141
110
  - !ruby/object:Gem::Version
142
111
  version: 3.0.0
143
112
  - !ruby/object:Gem::Dependency
144
113
  name: link_header
145
114
  requirement: !ruby/object:Gem::Requirement
146
- none: false
147
115
  requirements:
148
- - - ! '>='
116
+ - - ">="
149
117
  - !ruby/object:Gem::Version
150
118
  version: 0.0.7
151
119
  type: :runtime
152
120
  prerelease: false
153
121
  version_requirements: !ruby/object:Gem::Requirement
154
- none: false
155
122
  requirements:
156
- - - ! '>='
123
+ - - ">="
157
124
  - !ruby/object:Gem::Version
158
125
  version: 0.0.7
159
126
  description: Ruby interface for restful APIs
@@ -166,6 +133,7 @@ extra_rdoc_files: []
166
133
  files:
167
134
  - Rakefile
168
135
  - footrest.gemspec
136
+ - lib/footrest.rb
169
137
  - lib/footrest/client.rb
170
138
  - lib/footrest/connection.rb
171
139
  - lib/footrest/follow_redirects.rb
@@ -175,7 +143,6 @@ files:
175
143
  - lib/footrest/request.rb
176
144
  - lib/footrest/response_middleware.rb
177
145
  - lib/footrest/version.rb
178
- - lib/footrest.rb
179
146
  - spec/footrest/client_spec.rb
180
147
  - spec/footrest/http_error_spec.rb
181
148
  - spec/footrest/pagination_spec.rb
@@ -184,27 +151,26 @@ files:
184
151
  homepage: https://github.com/instructure/footrest
185
152
  licenses:
186
153
  - MIT
154
+ metadata: {}
187
155
  post_install_message:
188
156
  rdoc_options: []
189
157
  require_paths:
190
158
  - lib
191
159
  required_ruby_version: !ruby/object:Gem::Requirement
192
- none: false
193
160
  requirements:
194
- - - ! '>='
161
+ - - ">="
195
162
  - !ruby/object:Gem::Version
196
163
  version: '0'
197
164
  required_rubygems_version: !ruby/object:Gem::Requirement
198
- none: false
199
165
  requirements:
200
- - - ! '>='
166
+ - - ">="
201
167
  - !ruby/object:Gem::Version
202
168
  version: '0'
203
169
  requirements: []
204
170
  rubyforge_project:
205
- rubygems_version: 1.8.23
171
+ rubygems_version: 2.2.2
206
172
  signing_key:
207
- specification_version: 3
173
+ specification_version: 4
208
174
  summary: REST APIs
209
175
  test_files:
210
176
  - spec/footrest/client_spec.rb
@@ -212,4 +178,3 @@ test_files:
212
178
  - spec/footrest/pagination_spec.rb
213
179
  - spec/footrest/request_spec.rb
214
180
  - spec/spec_helper.rb
215
- has_rdoc: