canvas_oauth_engine 1.0.4 → 1.1.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 +4 -4
- data/lib/canvas_oauth/canvas_api.rb +12 -12
- data/lib/canvas_oauth/version.rb +1 -1
- data/spec/lib/canvas_oauth/canvas_api_spec.rb +30 -2
- data/spec/spec_helper.rb +7 -0
- metadata +25 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd71940eac39f52a99da306965eb23fba309c976
|
4
|
+
data.tar.gz: 97c14ba4e0722765bdd5882fb21ca6b8a4718166
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3d6fa87ad02ac0a56d1841502f61f2222e8ef322cc4f3d3533858fde597e9cd16e327960f8846f67266c495bd7e34286bd29aae6e45ca1fef63ae790213e7f2
|
7
|
+
data.tar.gz: 652903cb90ff4453d540079deaf9c43ede5d4491e963c4d3c1fe9f07c438cfd13222fd3ebb3ac0f65481b451b04931454300271bb57067a8aaa8d10d7265f2f9
|
@@ -46,22 +46,18 @@ module CanvasOauth
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
def paginated_get(
|
50
|
-
params[
|
51
|
-
params[
|
52
|
-
params[1][:query][:per_page] = PER_PAGE
|
49
|
+
def paginated_get(url, params = {})
|
50
|
+
params[:query] ||= {}
|
51
|
+
params[:query][:per_page] = PER_PAGE
|
53
52
|
|
54
53
|
all_pages = []
|
55
54
|
|
56
|
-
while params
|
57
|
-
|
58
|
-
all_pages += current_page if valid_page?(current_page)
|
55
|
+
while url && current_page = authenticated_get(url, params) do
|
56
|
+
all_pages.concat(current_page) if valid_page?(current_page)
|
59
57
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
params[0] = nil
|
64
|
-
end
|
58
|
+
links = LinkHeader.parse(current_page.headers['link'])
|
59
|
+
url = links.find_link(["rel", "next"]).try(:href)
|
60
|
+
params[:query] = nil if params[:query]
|
65
61
|
end
|
66
62
|
|
67
63
|
all_pages
|
@@ -203,6 +199,10 @@ module CanvasOauth
|
|
203
199
|
authenticated_put "/api/v1/courses/#{course_id}/assignments/#{assignment_id}/submissions/#{user_id}", { body: params }
|
204
200
|
end
|
205
201
|
|
202
|
+
def get_submission(course_id, assignment_id, user_id)
|
203
|
+
authenticated_get "/api/v1/courses/#{course_id}/assignments/#{assignment_id}/submissions/#{user_id}"
|
204
|
+
end
|
205
|
+
|
206
206
|
def course_account_id(course_id)
|
207
207
|
course = get_course(course_id)
|
208
208
|
course['account_id'] if course
|
data/lib/canvas_oauth/version.rb
CHANGED
@@ -165,6 +165,13 @@ describe CanvasOauth::CanvasApi do
|
|
165
165
|
canvas.grade_assignment('1', '2', '3', percentage: "80%")
|
166
166
|
end
|
167
167
|
end
|
168
|
+
|
169
|
+
describe 'get_submission' do
|
170
|
+
it 'queries /api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id' do
|
171
|
+
expect(canvas).to receive(:authenticated_get).with('/api/v1/courses/1/assignments/2/submissions/3')
|
172
|
+
canvas.get_submission(1, 2, 3)
|
173
|
+
end
|
174
|
+
end
|
168
175
|
end
|
169
176
|
|
170
177
|
describe "pagination" do
|
@@ -179,6 +186,10 @@ describe CanvasOauth::CanvasApi do
|
|
179
186
|
end
|
180
187
|
|
181
188
|
describe "paginated_get" do
|
189
|
+
|
190
|
+
let(:first_response_link) { {'link' => "<https://foobar.com/some/address?taco=tuesday&per_page=50&page=2>; rel=\"next\", <https://foobar.com/some/address?taco=tuesday&per_page=50&page=2>; rel=\"last\""} }
|
191
|
+
let(:query) { { query: { taco: 'tuesday' } } }
|
192
|
+
|
182
193
|
it "adds per_page parameters to the request query" do
|
183
194
|
expect(canvas).to receive(:authenticated_get).with("/some/address", query: { per_page: 50 })
|
184
195
|
canvas.paginated_get "/some/address"
|
@@ -188,11 +199,28 @@ describe CanvasOauth::CanvasApi do
|
|
188
199
|
allow(canvas).to receive(:valid_page?) { true }
|
189
200
|
first_response = []
|
190
201
|
second_response = []
|
191
|
-
allow(first_response).to receive(:headers).and_return(
|
202
|
+
allow(first_response).to receive(:headers).and_return(first_response_link)
|
192
203
|
allow(second_response).to receive(:headers).and_return({})
|
193
204
|
expect(canvas).to receive(:authenticated_get).
|
194
205
|
exactly(2).times.and_return(first_response,second_response)
|
195
|
-
canvas.paginated_get "/some/address"
|
206
|
+
canvas.paginated_get "/some/address", query
|
207
|
+
end
|
208
|
+
|
209
|
+
it "requests the next link without repeating query elements" do
|
210
|
+
query_expected = query.dup
|
211
|
+
query_expected[:query][:per_page] = 50
|
212
|
+
|
213
|
+
allow(canvas).to receive(:valid_page?) { true }
|
214
|
+
|
215
|
+
first_response = []
|
216
|
+
second_response = []
|
217
|
+
allow(first_response).to receive(:headers).and_return(first_response_link)
|
218
|
+
allow(second_response).to receive(:headers).and_return({})
|
219
|
+
|
220
|
+
expect(canvas).to receive(:authenticated_get).with("/some/address", query_expected).and_return(first_response)
|
221
|
+
expect(canvas).to receive(:authenticated_get).with('https://foobar.com/some/address?taco=tuesday&per_page=50&page=2', {query: nil}).and_return(second_response)
|
222
|
+
|
223
|
+
canvas.paginated_get "/some/address", query
|
196
224
|
end
|
197
225
|
|
198
226
|
it "sends only one request when no next link is in the response Link header" do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: canvas_oauth_engine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dave Donahue
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2016-05-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -134,16 +134,16 @@ dependencies:
|
|
134
134
|
name: shoulda-matchers
|
135
135
|
requirement: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
|
-
- - "
|
137
|
+
- - "~>"
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version:
|
139
|
+
version: 3.1.1
|
140
140
|
type: :development
|
141
141
|
prerelease: false
|
142
142
|
version_requirements: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
|
-
- - "
|
144
|
+
- - "~>"
|
145
145
|
- !ruby/object:Gem::Version
|
146
|
-
version:
|
146
|
+
version: 3.1.1
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: webmock
|
149
149
|
requirement: !ruby/object:Gem::Requirement
|
@@ -162,16 +162,30 @@ dependencies:
|
|
162
162
|
name: guard-rspec
|
163
163
|
requirement: !ruby/object:Gem::Requirement
|
164
164
|
requirements:
|
165
|
-
- -
|
165
|
+
- - '='
|
166
166
|
- !ruby/object:Gem::Version
|
167
|
-
version:
|
167
|
+
version: 4.6.4
|
168
168
|
type: :development
|
169
169
|
prerelease: false
|
170
170
|
version_requirements: !ruby/object:Gem::Requirement
|
171
171
|
requirements:
|
172
|
-
- -
|
172
|
+
- - '='
|
173
173
|
- !ruby/object:Gem::Version
|
174
|
-
version:
|
174
|
+
version: 4.6.4
|
175
|
+
- !ruby/object:Gem::Dependency
|
176
|
+
name: listen
|
177
|
+
requirement: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - "~>"
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: 3.0.6
|
182
|
+
type: :development
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - "~>"
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: 3.0.6
|
175
189
|
- !ruby/object:Gem::Dependency
|
176
190
|
name: rb-fsevent
|
177
191
|
requirement: !ruby/object:Gem::Requirement
|
@@ -267,7 +281,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
267
281
|
version: '0'
|
268
282
|
requirements: []
|
269
283
|
rubyforge_project:
|
270
|
-
rubygems_version: 2.
|
284
|
+
rubygems_version: 2.5.1
|
271
285
|
signing_key:
|
272
286
|
specification_version: 4
|
273
287
|
summary: CanvasOauth is a mountable engine for handling the oauth workflow with canvas
|