bearcat 0.9.10 → 0.9.12

Sign up to get free protection for your applications and to get access to all the features.
data/bearcat.gemspec CHANGED
@@ -1,4 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
+ # spec/fixtures/bearcat.jpg Attribution: TassiloRau at the German language Wikipedia
2
3
  lib = File.expand_path('../lib', __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'bearcat/version'
@@ -21,7 +22,6 @@ Gem::Specification.new do |gem|
21
22
  gem.add_development_dependency "bundler", ">= 1.0.0"
22
23
  gem.add_development_dependency "rspec", "~> 2.6"
23
24
  gem.add_development_dependency "webmock"
24
- gem.add_development_dependency "debugger"
25
25
 
26
26
  gem.add_dependency "footrest", ">= 0.2.2"
27
27
  end
@@ -1,24 +1,25 @@
1
- require 'footrest/client'
2
- require 'bearcat/api_array'
3
- require 'bearcat/client/assignments'
4
- require 'bearcat/client/courses'
5
- require 'bearcat/client/enrollments'
6
- require 'bearcat/client/outcome_groups'
7
- require 'bearcat/client/outcomes'
8
- require 'bearcat/client/sections'
9
- require 'bearcat/client/o_auth2'
10
- require 'bearcat/client/groups'
11
- require 'bearcat/client/conferences'
12
- require 'bearcat/client/users'
13
- require 'bearcat/client/reports'
14
- require 'bearcat/client/accounts'
15
- require 'bearcat/client/submissions'
16
- require 'bearcat/client/conversations'
17
- require 'bearcat/client/modules'
18
-
19
1
  module Bearcat
20
2
  class Client < Footrest::Client
21
3
 
4
+ require 'footrest/client'
5
+ require 'bearcat/api_array'
6
+ require 'bearcat/client/assignments'
7
+ require 'bearcat/client/courses'
8
+ require 'bearcat/client/enrollments'
9
+ require 'bearcat/client/outcome_groups'
10
+ require 'bearcat/client/outcomes'
11
+ require 'bearcat/client/sections'
12
+ require 'bearcat/client/o_auth2'
13
+ require 'bearcat/client/groups'
14
+ require 'bearcat/client/conferences'
15
+ require 'bearcat/client/users'
16
+ require 'bearcat/client/reports'
17
+ require 'bearcat/client/accounts'
18
+ require 'bearcat/client/submissions'
19
+ require 'bearcat/client/conversations'
20
+ require 'bearcat/client/modules'
21
+ require 'bearcat/client/canvas_files'
22
+
22
23
  include Assignments
23
24
  include Accounts
24
25
  include Courses
@@ -34,6 +35,7 @@ module Bearcat
34
35
  include Submissions
35
36
  include Conversations
36
37
  include Modules
38
+ include CanvasFiles
37
39
 
38
40
 
39
41
  # Override Footrest request for ApiArray support
@@ -0,0 +1,51 @@
1
+ module Bearcat
2
+ class Client < Footrest::Client
3
+ module CanvasFiles
4
+
5
+ def upload_file(api_path, file_path, params = {})
6
+ declare_response = declare_file(api_path, file_params(file_path).merge(params))
7
+ confirmation_url = post_file(declare_response['upload_url'], declare_response['upload_params'], file_path)
8
+ confirm_file_upload(confirmation_url)
9
+ end
10
+
11
+ private
12
+
13
+ def file_params(file_path)
14
+ {
15
+ size: File.open(file_path).size,
16
+ name: File.basename(file_path)
17
+ }
18
+ end
19
+
20
+ def declare_file(api_path, params)
21
+ post(api_path, params)
22
+ end
23
+
24
+ def post_file(url, params, file_path)
25
+ params['Filename'] = File.basename(file_path)
26
+ params['file'] = Faraday::UploadIO.new(file_path, params['content-type'])
27
+
28
+ response = upload_connection.post(url, params)
29
+ if response.status == (302 || 303) #success if it is a redirect
30
+ response.headers['Location']
31
+ else
32
+ raise 'FailedFileUpload'
33
+ end
34
+ end
35
+
36
+ def confirm_file_upload(url)
37
+ uri = URI(url)
38
+ post(uri.path, CGI::parse(uri.query))
39
+ end
40
+
41
+ def upload_connection
42
+ Faraday.new do |f|
43
+ f.request :multipart
44
+ f.request :url_encoded
45
+ f.adapter :net_http
46
+ end
47
+ end
48
+
49
+ end
50
+ end
51
+ end
@@ -6,6 +6,32 @@ module Bearcat
6
6
  get("/api/v1/courses/#{course.to_s}/students/submissions", params)
7
7
  end
8
8
 
9
+ def course_submission(course, assignment, params)
10
+ post("/api/v1/courses/#{course}/assignments/#{assignment}/submissions", params)
11
+ end
12
+
13
+ def section_submission(section, assignment, params)
14
+ post("/api/v1/sections/#{section}/assignments/#{assignment}/submissions", params)
15
+ end
16
+
17
+ def course_file_upload_submission(course, assignment, user, file_path, params={})
18
+ response = upload_file("/api/v1/courses/#{course}/assignments/#{assignment}/submissions/#{user}/files", file_path, params)
19
+ params['submission'] = {
20
+ 'submission_type' => 'online_upload',
21
+ 'file_ids'=> [response['id']]
22
+ }
23
+ course_submission(course, assignment, params)
24
+ end
25
+
26
+ def section_file_upload_submission(section, assignment, user, file_path, params={})
27
+ response = upload_file("/api/v1/sections/#{section}/assignments/#{assignment}/submissions/#{user}/files", file_path, params)
28
+ params['submission'] = {
29
+ 'submission_type' => 'online_upload',
30
+ 'file_ids'=> [response['id']]
31
+ }
32
+ section_submission(section, assignment, params)
33
+ end
34
+
9
35
  end
10
36
  end
11
- end
37
+ end
@@ -40,6 +40,9 @@ module Bearcat
40
40
  delete("/api/v1/users/#{user}/custom_data/#{scope}", params)
41
41
  end
42
42
 
43
+ def page_views(user, params = {})
44
+ get("/api/v1/users/#{user}/page_views", params)
45
+ end
43
46
  end
44
47
  end
45
48
  end
@@ -1,3 +1,3 @@
1
1
  module Bearcat
2
- VERSION = '0.9.10' unless defined?(Bearcat::VERSION)
2
+ VERSION = '0.9.12' unless defined?(Bearcat::VERSION)
3
3
  end
@@ -0,0 +1,34 @@
1
+ require 'helper'
2
+
3
+ describe Bearcat::Client::CanvasFiles do
4
+ before do
5
+ @client = Bearcat::Client.new(prefix: "http://canvas.instructure.com", token: "test_token")
6
+ end
7
+
8
+ it 'uploads a file' do
9
+ stub_post(@client, "/my/upload/path").
10
+ with(:body => {"name" => "bearcat.jpg", "size" => "121363"}).
11
+ to_return(json_response('canvas_files', 'declare_file.json'))
12
+
13
+ stub_request(:post, "https://upload-url.invalid/").
14
+ to_return(status: 302, headers: {'Location' => 'https://confirm-upload.invalid/confirm?param=true'})
15
+
16
+ stub_post(@client, "/confirm").
17
+ with(:body => {"param" => ["true"]}).to_return(json_response('canvas_files', 'upload_success.json'))
18
+
19
+ response = @client.upload_file('my/upload/path', fixture('bearcat.jpg'))
20
+ expect(response['id']).to eq 123
21
+ end
22
+
23
+ it 'throws an error on a failed file upload' do
24
+ stub_post(@client, "/my/upload/path").
25
+ with(:body => {"name" => "bearcat.jpg", "size" => "121363"}).
26
+ to_return(json_response('canvas_files', 'declare_file.json'))
27
+
28
+ stub_request(:post, "https://upload-url.invalid/").
29
+ to_return(status: 400, headers: {'Location' => 'https://confirm-upload.invalid/confirm?param=true'})
30
+
31
+ expect { @client.upload_file('my/upload/path', fixture('bearcat.jpg')) }.to raise_exception
32
+ end
33
+
34
+ end
@@ -13,7 +13,7 @@ describe Bearcat::Client::Modules do
13
13
  end
14
14
 
15
15
  it "returns a course items module sequence" do
16
- query = {"asset_type" => "assignment", "asset_id" => 22}
16
+ query = {"asset_type" => "assignment", "asset_id" => '22'}
17
17
  stub_get(@client, "/api/v1/courses/1/module_item_sequence").with(query: query).to_return(json_response("module_item_sequence.json"))
18
18
  item_sequence = @client.course_module_item_sequence("1", query)
19
19
  items = item_sequence["modules"]
@@ -6,7 +6,7 @@ describe Bearcat::Client::Submissions do
6
6
  end
7
7
 
8
8
  it "returns all submissions for a course" do
9
- stub_get(@client, "/api/v1/courses/3/students/submissions").to_return(json_response("submissions.json"))
9
+ stub_get(@client, "/api/v1/courses/3/students/submissions").to_return(json_response('submissions', "submission.json"))
10
10
  submissions = @client.course_submissions(3)
11
11
  submissions['assignment_id'].should == 2353405
12
12
  submissions['id'].should == 8444510
@@ -21,4 +21,23 @@ describe Bearcat::Client::Submissions do
21
21
  submissions['workflow_state'].should =='unsubmitted'
22
22
  end
23
23
 
24
+ context 'course' do
25
+ it "submits a file" do
26
+ @client.stub(:upload_file).and_return({})
27
+ stub_post(@client, '/api/v1/courses/1/assignments/2/submissions').to_return(json_response('submissions', 'submission.json'))
28
+ response = @client.course_file_upload_submission(1, 2, 3, fixture('bearcat.jpg'))
29
+ response['id'].should == 8444510
30
+ end
31
+ end
32
+
33
+ context 'section' do
34
+ it "submits a file" do
35
+ @client.stub(:upload_file).and_return({})
36
+ stub_post(@client, '/api/v1/sections/1/assignments/2/submissions').to_return(json_response('submissions', 'submission.json'))
37
+ response = @client.section_file_upload_submission(1, 2, 3, fixture('bearcat.jpg'))
38
+ response['id'].should == 8444510
39
+ end
40
+ end
41
+
42
+
24
43
  end
@@ -38,6 +38,15 @@ describe Bearcat::Client::Users do
38
38
  user_profile["time_zone"].should == "America/Denver"
39
39
  end
40
40
 
41
+ it "returns a users page_views" do
42
+ stub_get(@client, "/api/v1/users/1/page_views").to_return(json_response("user_page_views.json"))
43
+ page_views = @client.page_views(1)
44
+ page_views.members.count.should == 1
45
+ page_views.members.first['action'].should == 'show'
46
+ page_views.members.first['links'].should == {'user'=>1, 'context'=>1, 'asset'=>nil,
47
+ 'real_user'=>nil, 'account'=>1}
48
+ end
49
+
41
50
  describe 'user custom data' do
42
51
  before (:each) do
43
52
  @query = {"ns" => "com.test.app"}
Binary file
@@ -0,0 +1,14 @@
1
+ {
2
+ "upload_url": "https://upload-url.invalid",
3
+ "upload_params": {
4
+ "AWSAccessKeyId": "ABC123",
5
+ "Filename": "",
6
+ "key": "key",
7
+ "acl": "private",
8
+ "Policy": "policy",
9
+ "Signature": "signature",
10
+ "success_action_redirect": "https://my_redirect.invalid/redirect?my_param=100",
11
+ "content-type": "image/jpg"
12
+ },
13
+ "file_param": "file"
14
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "id": 123,
3
+ "content-type": "image/jpg",
4
+ "display_name": "bearcat.jpg",
5
+ "filename": "bearcat.jpg",
6
+ "url": "https://canvas.instructure.com/files/123/download?download_frd=1&verifier=cdw3",
7
+ "size": 178559,
8
+ "created_at": "2014-05-01T17:04:32Z",
9
+ "updated_at": "2014-05-01T17:04:34Z",
10
+ "unlock_at": null,
11
+ "locked": false,
12
+ "hidden": false,
13
+ "lock_at": null,
14
+ "hidden_for_user": false,
15
+ "thumbnail_url": "https://thumbnail.invalid",
16
+ "locked_for_user": false
17
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "assignment_id": 2353405,
3
+ "attempt": null,
4
+ "body": null,
5
+ "grade": "1",
6
+ "grade_matches_current_submission": null,
7
+ "graded_at": "2014-02-27T20:22:49Z",
8
+ "grader_id": 627536,
9
+ "id": 8444510,
10
+ "score": 1,
11
+ "submission_type": null,
12
+ "submitted_at": null,
13
+ "url": null,
14
+ "user_id": 682285,
15
+ "workflow_state": "unsubmitted",
16
+ "late": false,
17
+ "preview_url": "https://canvas.instructure.com/courses/218274/assignments/2353405/submissions/682285?preview=1"
18
+ }
@@ -0,0 +1,31 @@
1
+ [
2
+ {
3
+ "action": "show",
4
+ "asset_type": null,
5
+ "asset_user_access_id": null,
6
+ "context_type": "Account",
7
+ "controller": "accounts",
8
+ "created_at": "2014-05-28T22:03:32Z",
9
+ "developer_key_id": null,
10
+ "http_method": "get",
11
+ "interaction_seconds": 5,
12
+ "participated": null,
13
+ "remote_ip": "70.70.45.79",
14
+ "render_time": 0.395979262,
15
+ "session_id": "84fa36c3e18f9d11d8f4fa47ec123525",
16
+ "summarized": true,
17
+ "updated_at": "2014-05-28T22:03:32Z",
18
+ "url": "http:localhost:3000",
19
+ "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36",
20
+ "user_request": true,
21
+ "id": "d4e6c140-c8e1-0131-3994-22000ab7c2ed",
22
+ "contributed": false,
23
+ "links": {
24
+ "user": 1,
25
+ "context": 1,
26
+ "asset": null,
27
+ "real_user": null,
28
+ "account": 1
29
+ }
30
+ }
31
+ ]
data/spec/helper.rb CHANGED
@@ -6,8 +6,8 @@ require 'json'
6
6
 
7
7
  WebMock.disable_net_connect!
8
8
 
9
- def fixture(file)
10
- File.new(File.join(File.expand_path("../fixtures", __FILE__), file))
9
+ def fixture(*file)
10
+ File.new(File.join(File.expand_path("../fixtures", __FILE__), *file))
11
11
  end
12
12
 
13
13
  def stub_get(client, url)
@@ -26,9 +26,9 @@ def stub_delete(client, url)
26
26
  stub_request(:delete, "#{client.config[:prefix]}#{url}")
27
27
  end
28
28
 
29
- def json_response(file)
29
+ def json_response(*file)
30
30
  {
31
- :body => fixture(file),
31
+ :body => fixture(*file),
32
32
  :headers => {
33
33
  :content_type => 'application/json; charset=utf-8'
34
34
  }
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bearcat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.10
4
+ version: 0.9.12
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Nathan Mills, Jake Sorce
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-04-22 00:00:00.000000000 Z
12
+ date: 2014-05-29 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rake
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ! '>='
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ! '>='
25
28
  - !ruby/object:Gem::Version
@@ -27,6 +30,7 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: bundler
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - ! '>='
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - ! '>='
39
44
  - !ruby/object:Gem::Version
@@ -41,6 +46,7 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rspec
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ~>
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: webmock
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ! '>='
60
68
  - !ruby/object:Gem::Version
@@ -62,20 +70,7 @@ dependencies:
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ! '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: debugger
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ! '>='
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
79
74
  requirements:
80
75
  - - ! '>='
81
76
  - !ruby/object:Gem::Version
@@ -83,6 +78,7 @@ dependencies:
83
78
  - !ruby/object:Gem::Dependency
84
79
  name: footrest
85
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
86
82
  requirements:
87
83
  - - ! '>='
88
84
  - !ruby/object:Gem::Version
@@ -90,6 +86,7 @@ dependencies:
90
86
  type: :runtime
91
87
  prerelease: false
92
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
93
90
  requirements:
94
91
  - - ! '>='
95
92
  - !ruby/object:Gem::Version
@@ -103,12 +100,11 @@ extra_rdoc_files: []
103
100
  files:
104
101
  - Rakefile
105
102
  - bearcat.gemspec
106
- - lib/bearcat.rb
107
103
  - lib/bearcat/api_array.rb
108
- - lib/bearcat/client.rb
109
104
  - lib/bearcat/client/account_reports.rb
110
105
  - lib/bearcat/client/accounts.rb
111
106
  - lib/bearcat/client/assignments.rb
107
+ - lib/bearcat/client/canvas_files.rb
112
108
  - lib/bearcat/client/conferences.rb
113
109
  - lib/bearcat/client/conversations.rb
114
110
  - lib/bearcat/client/courses.rb
@@ -122,9 +118,12 @@ files:
122
118
  - lib/bearcat/client/sections.rb
123
119
  - lib/bearcat/client/submissions.rb
124
120
  - lib/bearcat/client/users.rb
121
+ - lib/bearcat/client.rb
125
122
  - lib/bearcat/version.rb
123
+ - lib/bearcat.rb
126
124
  - spec/bearcat/client/accounts_spec.rb
127
125
  - spec/bearcat/client/assignments_spec.rb
126
+ - spec/bearcat/client/canvas_files_spec.rb
128
127
  - spec/bearcat/client/conferences_spec.rb
129
128
  - spec/bearcat/client/conversations_spec.rb
130
129
  - spec/bearcat/client/courses_spec.rb
@@ -146,6 +145,9 @@ files:
146
145
  - spec/fixtures/add_user.json
147
146
  - spec/fixtures/assignment_section_override.json
148
147
  - spec/fixtures/assignments.json
148
+ - spec/fixtures/bearcat.jpg
149
+ - spec/fixtures/canvas_files/declare_file.json
150
+ - spec/fixtures/canvas_files/upload_success.json
149
151
  - spec/fixtures/conclude_enrollment.json
150
152
  - spec/fixtures/conversation.json
151
153
  - spec/fixtures/course.json
@@ -182,40 +184,43 @@ files:
182
184
  - spec/fixtures/section_enrollments.json
183
185
  - spec/fixtures/single_account.json
184
186
  - spec/fixtures/start_report.json
185
- - spec/fixtures/submissions.json
187
+ - spec/fixtures/submissions/submission.json
186
188
  - spec/fixtures/update_outcome.json
187
189
  - spec/fixtures/update_outcome_group.json
188
190
  - spec/fixtures/update_section.json
189
191
  - spec/fixtures/user_avatars.json
190
192
  - spec/fixtures/user_enrollments.json
193
+ - spec/fixtures/user_page_views.json
191
194
  - spec/fixtures/user_profile.json
192
195
  - spec/helper.rb
193
196
  homepage:
194
197
  licenses: []
195
- metadata: {}
196
198
  post_install_message:
197
199
  rdoc_options: []
198
200
  require_paths:
199
201
  - lib
200
202
  required_ruby_version: !ruby/object:Gem::Requirement
203
+ none: false
201
204
  requirements:
202
205
  - - ! '>='
203
206
  - !ruby/object:Gem::Version
204
207
  version: '0'
205
208
  required_rubygems_version: !ruby/object:Gem::Requirement
209
+ none: false
206
210
  requirements:
207
211
  - - ! '>='
208
212
  - !ruby/object:Gem::Version
209
213
  version: '0'
210
214
  requirements: []
211
215
  rubyforge_project:
212
- rubygems_version: 2.2.2
216
+ rubygems_version: 1.8.23
213
217
  signing_key:
214
- specification_version: 4
218
+ specification_version: 3
215
219
  summary: Canvas API
216
220
  test_files:
217
221
  - spec/bearcat/client/accounts_spec.rb
218
222
  - spec/bearcat/client/assignments_spec.rb
223
+ - spec/bearcat/client/canvas_files_spec.rb
219
224
  - spec/bearcat/client/conferences_spec.rb
220
225
  - spec/bearcat/client/conversations_spec.rb
221
226
  - spec/bearcat/client/courses_spec.rb
@@ -237,6 +242,9 @@ test_files:
237
242
  - spec/fixtures/add_user.json
238
243
  - spec/fixtures/assignment_section_override.json
239
244
  - spec/fixtures/assignments.json
245
+ - spec/fixtures/bearcat.jpg
246
+ - spec/fixtures/canvas_files/declare_file.json
247
+ - spec/fixtures/canvas_files/upload_success.json
240
248
  - spec/fixtures/conclude_enrollment.json
241
249
  - spec/fixtures/conversation.json
242
250
  - spec/fixtures/course.json
@@ -273,12 +281,13 @@ test_files:
273
281
  - spec/fixtures/section_enrollments.json
274
282
  - spec/fixtures/single_account.json
275
283
  - spec/fixtures/start_report.json
276
- - spec/fixtures/submissions.json
284
+ - spec/fixtures/submissions/submission.json
277
285
  - spec/fixtures/update_outcome.json
278
286
  - spec/fixtures/update_outcome_group.json
279
287
  - spec/fixtures/update_section.json
280
288
  - spec/fixtures/user_avatars.json
281
289
  - spec/fixtures/user_enrollments.json
290
+ - spec/fixtures/user_page_views.json
282
291
  - spec/fixtures/user_profile.json
283
292
  - spec/helper.rb
284
293
  has_rdoc:
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- Y2RkMGQ5ZDdhNWZkNWQ5MjVmZGU2NzAwY2I5ZDJmMjA1NzE3ZDNkMw==
5
- data.tar.gz: !binary |-
6
- NDUzNzU0NjhkYjY2MWZkMWMyNzRkODhjYjczZDFjYzA3NjI4NjI2ZA==
7
- SHA512:
8
- metadata.gz: !binary |-
9
- N2Y2YWIwMGUzNWM4MTZjOTkxMmVhMWNjNmY5YmQwYjYyZjA1N2M4ZWFhNWYw
10
- MjcyYmRjYzU4YzJkMjc1ODhkYzAyNjk0ZGY1NDQ2NTE1N2RiOTg5NzM3N2I3
11
- ODE4NjZlZDU4ZmZlOTlmZjhlYzNkOTY0MTc3OGYzMjA5MGI4NTc=
12
- data.tar.gz: !binary |-
13
- MTBjMzE2MDY3MjI1OTBjZmRhZmNkMzI1N2YxZTFkNzUxYWZiZTAyMTA5Nzdk
14
- NDFhNGRiNDVkZTI3NzExZWQ4NGVhNDNjYTM4MTJhY2JkMzQ1ZWMzNTY2MTNk
15
- ZGFmZTdjMzliNGQ4NWEwMjM4NTQyZGI3OTk1MDc1Nzc4NDE0ZTk=
@@ -1,18 +0,0 @@
1
- {
2
- "assignment_id": 2353405,
3
- "attempt": null,
4
- "body": null,
5
- "grade": "1",
6
- "grade_matches_current_submission": null,
7
- "graded_at": "2014-02-27T20:22:49Z",
8
- "grader_id": 627536,
9
- "id": 8444510,
10
- "score": 1,
11
- "submission_type": null,
12
- "submitted_at": null,
13
- "url": null,
14
- "user_id": 682285,
15
- "workflow_state": "unsubmitted",
16
- "late": false,
17
- "preview_url": "https://canvas.instructure.com/courses/218274/assignments/2353405/submissions/682285?preview=1"
18
- }