bearcat 1.4.12 → 1.4.13
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/bearcat/api_array.rb +2 -0
- data/lib/bearcat/client/file_helper.rb +1 -1
- data/lib/bearcat/client/submissions.rb +41 -14
- data/lib/bearcat/version.rb +1 -1
- data/spec/bearcat/client/canvas_files_spec.rb +2 -2
- data/spec/bearcat/client/content_migrations_spec.rb +2 -2
- data/spec/bearcat/client/courses_spec.rb +4 -4
- data/spec/bearcat/client/learning_outcomes_spec.rb +2 -2
- data/spec/bearcat/client/submissions_spec.rb +14 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 56127337ffe67a0c9a01aa12a8c7d858331c49a8c608c2ec7e82de2b10abaadc
|
4
|
+
data.tar.gz: ef63a06ce0fc281a255763afbd1d7e0d07e85b2d40bf2a45b01a4a41f21efb1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9dee94f956ca584cc6c0d892277e424430f81c62074106f040fe92974d926b5df72dc8b57d7e3f84dff64d135ba274967da32110bb8201aee061715b331b4969
|
7
|
+
data.tar.gz: 114bbcc3a2374c8b8774da933c412ea73f57a9adb0273a5d1683ee4949fd077088bdb12ca91e430011cda1740023a4c9b480a45c573c9685ee30a9215488d2c0
|
data/lib/bearcat/api_array.rb
CHANGED
@@ -34,22 +34,12 @@ module Bearcat
|
|
34
34
|
put("/api/v1/sections/#{section}/assignments/#{assignment}/submissions/#{user}", params)
|
35
35
|
end
|
36
36
|
|
37
|
-
def course_file_upload_submission(course, assignment, user,
|
38
|
-
|
39
|
-
params['submission'] = {
|
40
|
-
'submission_type' => 'online_upload',
|
41
|
-
'file_ids'=> [response['id']]
|
42
|
-
}
|
43
|
-
course_submission(course, assignment, params)
|
37
|
+
def course_file_upload_submission(course, assignment, user, file_data, params={})
|
38
|
+
file_upload_submission(course, assignment, user, file_data, params, type: :course)
|
44
39
|
end
|
45
40
|
|
46
|
-
def section_file_upload_submission(section, assignment, user,
|
47
|
-
|
48
|
-
params['submission'] = {
|
49
|
-
'submission_type' => 'online_upload',
|
50
|
-
'file_ids'=> [response['id']]
|
51
|
-
}
|
52
|
-
section_submission(section, assignment, params)
|
41
|
+
def section_file_upload_submission(section, assignment, user, file_data, params={})
|
42
|
+
file_upload_submission(section, assignment, user, file_data, params, type: :section)
|
53
43
|
end
|
54
44
|
|
55
45
|
def course_update_grades(course, assignment, params={})
|
@@ -60,6 +50,43 @@ module Bearcat
|
|
60
50
|
post("/api/v1/sections/#{section}/assignments/#{assignment}/submissions/update_grades", params)
|
61
51
|
end
|
62
52
|
|
53
|
+
protected
|
54
|
+
|
55
|
+
# @param file_data One of an array of file_path strings or an array of Hashes, each being upload file params plus the file's path
|
56
|
+
def file_upload_submission(type_id, assignment, user, file_data=nil, params={}, type:)
|
57
|
+
raise ArgumentError, 'Invalid type' unless [:course, :section].include?(type)
|
58
|
+
raise ArgumentError, 'Must provide either file paths or fully formed submission params' if params.dig(:submission, :file_ids).nil? && file_data.nil?
|
59
|
+
|
60
|
+
params = params.with_indifferent_access
|
61
|
+
sub_params = if params.dig(:submission, :file_ids).present?
|
62
|
+
{}
|
63
|
+
else
|
64
|
+
file_data = Array.wrap(file_data)
|
65
|
+
file_ids = file_data.map do |datum|
|
66
|
+
if datum.is_a?(Hash) && datum[:file_path].present?
|
67
|
+
# datum is a param hash for upload_file API plus the file_path
|
68
|
+
path = datum[:file_path]
|
69
|
+
upload_params = datum.except(:file_path)
|
70
|
+
else
|
71
|
+
# treat datum as a file_path string
|
72
|
+
path = datum
|
73
|
+
upload_params = params
|
74
|
+
end
|
75
|
+
|
76
|
+
response = upload_file("/api/v1/#{type}s/#{type_id}/assignments/#{assignment}/submissions/#{user}/files", path, upload_params)
|
77
|
+
response['id']
|
78
|
+
end
|
79
|
+
|
80
|
+
{
|
81
|
+
submission_type: 'online_upload',
|
82
|
+
file_ids: file_ids,
|
83
|
+
}
|
84
|
+
end
|
85
|
+
sub_params.merge!(params[:submission]) if params[:submission].present?
|
86
|
+
params[:submission] = sub_params
|
87
|
+
send("#{type}_submission".to_sym, type_id, assignment, params)
|
88
|
+
end
|
89
|
+
|
63
90
|
end
|
64
91
|
end
|
65
92
|
end
|
data/lib/bearcat/version.rb
CHANGED
@@ -13,8 +13,8 @@ describe Bearcat::Client::CanvasFiles do
|
|
13
13
|
stub_request(:post, "https://upload-url.invalid/").
|
14
14
|
to_return(status: 302, headers: {'Location' => 'https://confirm-upload.invalid/confirm?param=true'})
|
15
15
|
|
16
|
-
|
17
|
-
with(:
|
16
|
+
stub_get(@client, "/confirm").
|
17
|
+
with(:query => {"param" => ["true"]}).to_return(json_response('canvas_files', 'upload_success.json'))
|
18
18
|
|
19
19
|
response = @client.upload_file('my/upload/path', fixture('bearcat.jpg'))
|
20
20
|
expect(response['id']).to eq 123
|
@@ -7,12 +7,12 @@ describe Bearcat::Client::ContentMigrations do
|
|
7
7
|
|
8
8
|
it 'uploads a file' do
|
9
9
|
stub_post(@client, "/my/upload/path").
|
10
|
-
|
10
|
+
to_return(json_response('content_migration_files/response.json'))
|
11
11
|
|
12
12
|
stub_request(:post, "http://host/files_api").
|
13
13
|
to_return(status: 302, headers: {'Location' => 'https://confirm-upload.invalid/confirm?param=true'})
|
14
14
|
|
15
|
-
|
15
|
+
stub_get(@client, '/confirm').with(:query => {"param" => ["true"]}).to_return(json_response('content_migration_files/upload_success.json'))
|
16
16
|
|
17
17
|
opts = {migration_type: 'canvas_cartridge_importer', pre_attachment: {name: 'cc.imscc', size: '2034'}}
|
18
18
|
response = @client.upload_content_package('my/upload/path', fixture('cc.imscc'), opts)
|
@@ -49,8 +49,8 @@ describe Bearcat::Client::Sections do
|
|
49
49
|
stub_request(:post, "http://host/files_api").
|
50
50
|
to_return(status: 302, headers: {'Location' => 'https://confirm-upload.invalid/confirm?param=true'})
|
51
51
|
|
52
|
-
|
53
|
-
with(:
|
52
|
+
stub_get(@client, "/confirm").
|
53
|
+
with(:query => {"param" => ["true"]}).to_return(json_response('content_migration_files', 'upload_success.json'))
|
54
54
|
|
55
55
|
opts = {'migration_type' => 'canvas_cartridge_importer', 'pre_attachment[name]' => 'cc.imscc', 'pre_attachment[size]' => '2034'}
|
56
56
|
response = @client.create_content_migration('659', fixture('cc.imscc'), opts)
|
@@ -66,8 +66,8 @@ describe Bearcat::Client::Sections do
|
|
66
66
|
stub_request(:post, "http://host/files_api").
|
67
67
|
to_return(status: 302, headers: {'Location' => 'https://confirm-upload.invalid/confirm?param=true'})
|
68
68
|
|
69
|
-
|
70
|
-
with(:
|
69
|
+
stub_get(@client, "/confirm").
|
70
|
+
with(:query => {"param" => ["true"]}).to_return(json_response('content_migration_files', 'upload_success.json'))
|
71
71
|
|
72
72
|
opts = {'migration_type' => 'canvas_cartridge_importer', 'pre_attachment[name]' => 'cc.imscc', 'pre_attachment[size]' => '2034'}
|
73
73
|
content_migration_response, file_upload_response = @client.create_content_migration_with_both_responses('659', fixture('cc.imscc'), opts)
|
@@ -8,7 +8,7 @@ describe Bearcat::Client::LearningOutcomes do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
it "returns an individual learning outcome" do
|
11
|
-
stub_get(@client, "/api/v1/outcomes/1").to_return(json_response("
|
11
|
+
stub_get(@client, "/api/v1/outcomes/1").to_return(json_response("learning_outcome.json"))
|
12
12
|
outcome = @client.learning_outcome(1)
|
13
13
|
outcome["id"].should == 1
|
14
14
|
outcome["context_type"].should == "Course"
|
@@ -16,7 +16,7 @@ describe Bearcat::Client::LearningOutcomes do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it "updates an individual learning outcome" do
|
19
|
-
stub_put(@client, "/api/v1/outcomes/1").to_return(json_response("
|
19
|
+
stub_put(@client, "/api/v1/outcomes/1").to_return(json_response("learning_outcome.json"))
|
20
20
|
outcome = @client.update_learning_outcome(1)
|
21
21
|
outcome["id"].should == 1
|
22
22
|
outcome["context_type"].should == "Course"
|
@@ -45,6 +45,13 @@ describe Bearcat::Client::Submissions do
|
|
45
45
|
response['id'].should == 8444510
|
46
46
|
end
|
47
47
|
|
48
|
+
it "submits multiple files" do
|
49
|
+
@client.stub(:upload_file).and_return({})
|
50
|
+
stub_post(@client, '/api/v1/courses/1/assignments/2/submissions').to_return(json_response('submissions', 'submission.json'))
|
51
|
+
response = @client.course_file_upload_submission(1, 2, 3, [fixture('bearcat.jpg'), fixture('file.csv')])
|
52
|
+
response['id'].should == 8444510
|
53
|
+
end
|
54
|
+
|
48
55
|
it "updates grades" do
|
49
56
|
params = {"grade_data[123]" => "19"}
|
50
57
|
stub_post(@client, "/api/v1/courses/1/assignments/1/submissions/update_grades").with(body: {"grade_data"=>["19"]}).to_return(json_response("progress.json"))
|
@@ -56,6 +63,13 @@ describe Bearcat::Client::Submissions do
|
|
56
63
|
|
57
64
|
context 'section' do
|
58
65
|
it "submits a file" do
|
66
|
+
@client.stub(:upload_file).and_return({})
|
67
|
+
stub_post(@client, '/api/v1/sections/1/assignments/2/submissions').to_return(json_response('submissions', 'submission.json'))
|
68
|
+
response = @client.section_file_upload_submission(1, 2, 3, [fixture('bearcat.jpg'), fixture('file.csv')])
|
69
|
+
response['id'].should == 8444510
|
70
|
+
end
|
71
|
+
|
72
|
+
it "submits multiple files" do
|
59
73
|
@client.stub(:upload_file).and_return({})
|
60
74
|
stub_post(@client, '/api/v1/sections/1/assignments/2/submissions').to_return(json_response('submissions', 'submission.json'))
|
61
75
|
response = @client.section_file_upload_submission(1, 2, 3, fixture('bearcat.jpg'))
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bearcat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Mills, Jake Sorce
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -386,7 +386,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
386
386
|
- !ruby/object:Gem::Version
|
387
387
|
version: '0'
|
388
388
|
requirements: []
|
389
|
-
rubygems_version: 3.
|
389
|
+
rubygems_version: 3.1.6
|
390
390
|
signing_key:
|
391
391
|
specification_version: 4
|
392
392
|
summary: Canvas API
|