scorm_engine 0.6.3 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/scorm_engine/api/endpoints.rb +28 -6
- data/lib/scorm_engine/api/endpoints/courses/import.rb +17 -5
- data/lib/scorm_engine/models/registration_runtime_interaction.rb +1 -1
- data/lib/scorm_engine/version.rb +1 -1
- data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_get_course_import/successful_imports/works.yml +59 -32
- data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_get_course_import/unsuccessful_imports/fails_to_import_given_an_invalid_url.yml +49 -20
- data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_post_course_import/successful_imports/works_with_a_pathname.yml +41 -0
- data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_post_course_import/successful_imports/{works.yml → works_with_a_url.yml} +9 -9
- data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_post_course_import/unsuccessful_imports/fails_to_import_a_previously_existing_course.yml +6 -6
- data/spec/scorm_engine/api/endpoints/courses/import_spec.rb +19 -4
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a828b4c9aa75bf10b9fc11da7bdb3b736a86dde21d37fdd50d81b5cf283f377a
|
4
|
+
data.tar.gz: f4641ea80c941a4762c8e568f2633a68444a1430e066dc5f019a421b2c0a6a2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 199781c9673f5d770df86a4973c4e2ddc0761e8df54f3c3b405825c78df43212a91b255e8a744435cddcda567077c626ca2a841c16b04b01c197af021cd2716a
|
7
|
+
data.tar.gz: ae09f2084bb6954fd0a4f7d37f695b6ec3e096eac91595cb1c9a1f434080224a4c45b8af80445748a450fe3e6aa2909092ab376a7ed11e81bfe0b71430960a3c
|
@@ -26,14 +26,16 @@ module ScormEngine
|
|
26
26
|
private
|
27
27
|
|
28
28
|
#
|
29
|
-
# Ensure that all of the keys are present in the hash passed and raise an
|
29
|
+
# Ensure that all of the keys are present in the hash passed and raise an
|
30
|
+
# error if not.
|
30
31
|
#
|
31
32
|
# @example
|
32
33
|
# require_options({foo: 1, bar: {"baz" => 2}}, :foo, [:bar, :baz], :moo)
|
33
34
|
# # will raise an errror due to lack of :moo
|
34
35
|
#
|
35
36
|
# @param [Hash] haystack
|
36
|
-
# The option hash in which to search for the given, optionally nested,
|
37
|
+
# The option hash in which to search for the given, optionally nested,
|
38
|
+
# key[s].
|
37
39
|
#
|
38
40
|
# @param [Array] sets_of_needles
|
39
41
|
# A splat of keys or array of nested keys to search for.
|
@@ -41,13 +43,33 @@ module ScormEngine
|
|
41
43
|
# @raise [ArgumentError] if any needle isn't found.
|
42
44
|
#
|
43
45
|
def require_options(haystack = {}, *sets_of_needles)
|
44
|
-
sets_of_needles.each { |needles| require_option(haystack, *needles) }
|
46
|
+
sets_of_needles.each { |needles| require_option(haystack, true, *needles) }
|
45
47
|
end
|
46
48
|
|
47
|
-
|
49
|
+
#
|
50
|
+
# Ensure that exactly one of the keys are present in the hash passed and
|
51
|
+
# raise an error if not.
|
52
|
+
#
|
53
|
+
# @param [Hash] haystack
|
54
|
+
# The option hash in which to search for the given, optionally nested,
|
55
|
+
# key[s].
|
56
|
+
#
|
57
|
+
# @param [Array] sets_of_needles
|
58
|
+
# A splat of keys or array of nested keys to search for.
|
59
|
+
#
|
60
|
+
# @raise [ArgumentError] if zero or more than one key is found.
|
61
|
+
#
|
62
|
+
def require_exclusive_option(haystack = {}, *sets_of_needles)
|
63
|
+
options_set = sets_of_needles.map { |needles| require_option(haystack, false, *needles) ? needles : nil }.compact
|
64
|
+
return true if options_set.one?
|
65
|
+
raise(ArgumentError, "Exclusive option required. One of: #{sets_of_needles.map { |n| Array(n).join("/") }.join(", ")}")
|
66
|
+
end
|
67
|
+
|
68
|
+
def require_option(haystack, raise_error, *needles)
|
48
69
|
value = needles.reduce(haystack) { |m, o| value_for_key(m, o) }
|
49
|
-
return unless value.nil?
|
50
|
-
raise
|
70
|
+
return true unless value.nil?
|
71
|
+
raise(ArgumentError, "Required option #{needles.join("/")} missing") if raise_error
|
72
|
+
false
|
51
73
|
end
|
52
74
|
|
53
75
|
def value_for_key(memo, obj)
|
@@ -14,15 +14,21 @@ module ScormEngine
|
|
14
14
|
#
|
15
15
|
# @param [Hash] options
|
16
16
|
#
|
17
|
-
# @option options [String] :url
|
18
|
-
# URL path to the .zip package representing the course or the manifest file defining the course.
|
19
|
-
#
|
20
17
|
# @option options [String] :course_id
|
21
18
|
# A unique identifier your application will use to identify the
|
22
19
|
# course after import. Your application is responsible both for
|
23
20
|
# generating this unique ID and for keeping track of the ID for later
|
24
21
|
# use.
|
25
22
|
#
|
23
|
+
# @option options [String] :url
|
24
|
+
# URL path to the .zip package representing the course or the
|
25
|
+
# manifest file defining the course. Mutually exclusive with
|
26
|
+
# :pathname.
|
27
|
+
#
|
28
|
+
# @option options [String] :pathname
|
29
|
+
# Local file path to the .zip package representing the course.
|
30
|
+
# Mutually exclusive with :url.
|
31
|
+
#
|
26
32
|
# @option options [Boolean] :may_create_new_version (false)
|
27
33
|
# Is it OK to create a new version of this course? If this is set to
|
28
34
|
# false and the course already exists, the upload will fail. If true
|
@@ -35,7 +41,8 @@ module ScormEngine
|
|
35
41
|
# @return [ScormEngine::Models::CourseImport]
|
36
42
|
#
|
37
43
|
def post_course_import(options = {})
|
38
|
-
require_options(options, :course_id
|
44
|
+
require_options(options, :course_id)
|
45
|
+
require_exclusive_option(options, :url, :pathname)
|
39
46
|
|
40
47
|
query_params = {
|
41
48
|
course: options[:course_id],
|
@@ -43,10 +50,15 @@ module ScormEngine
|
|
43
50
|
}
|
44
51
|
|
45
52
|
body = {
|
46
|
-
url: options[:url],
|
47
53
|
courseName: options[:name] || options[:course_id]
|
48
54
|
}
|
49
55
|
|
56
|
+
body[:url] = if options[:url]
|
57
|
+
options[:url]
|
58
|
+
elsif options[:pathname]
|
59
|
+
::Faraday::UploadIO.new(options[:pathname], "application/zip")
|
60
|
+
end
|
61
|
+
|
50
62
|
response = post("courses/importJobs", query_params, body)
|
51
63
|
|
52
64
|
result = response&.success? ? ScormEngine::Models::CourseImport.new_from_api(response.body) : nil
|
data/lib/scorm_engine/version.rb
CHANGED
@@ -5,14 +5,14 @@ http_interactions:
|
|
5
5
|
uri: https://<SCORM_ENGINE_HOST>/ScormEngineInterface/api/v1/ScormEngineGemTesting-default/courses/importJobs?course=a-valid-course-url&mayCreateNewVersion=true
|
6
6
|
body:
|
7
7
|
encoding: UTF-8
|
8
|
-
string: '{"url":"https://github.com/phallstrom/scorm_engine/raw/master/spec/fixtures/zip/RuntimeBasicCalls_SCORM20043rdEdition.zip"
|
8
|
+
string: '{"courseName":"a-valid-course-url","url":"https://github.com/phallstrom/scorm_engine/raw/master/spec/fixtures/zip/RuntimeBasicCalls_SCORM20043rdEdition.zip"}'
|
9
9
|
headers:
|
10
|
-
Content-Type:
|
11
|
-
- application/json
|
12
10
|
User-Agent:
|
13
|
-
- ScormEngine Ruby Gem 0.
|
11
|
+
- ScormEngine Ruby Gem 0.6.3
|
14
12
|
Authorization:
|
15
13
|
- Basic <BASIC_AUTH>
|
14
|
+
Content-Type:
|
15
|
+
- application/json
|
16
16
|
response:
|
17
17
|
status:
|
18
18
|
code: 200
|
@@ -21,7 +21,7 @@ http_interactions:
|
|
21
21
|
content-type:
|
22
22
|
- application/json
|
23
23
|
date:
|
24
|
-
-
|
24
|
+
- Mon, 10 Sep 2018 17:29:02 GMT
|
25
25
|
server:
|
26
26
|
- nginx
|
27
27
|
vary:
|
@@ -32,20 +32,18 @@ http_interactions:
|
|
32
32
|
- Close
|
33
33
|
body:
|
34
34
|
encoding: ASCII-8BIT
|
35
|
-
string: '{"result":"
|
35
|
+
string: '{"result":"08e0a9a6-86b0-4b19-9e23-46d825a4c114","importResult":{"status":"RUNNING","parserWarnings":[],"courseLanguages":[]}}'
|
36
36
|
http_version:
|
37
|
-
recorded_at:
|
37
|
+
recorded_at: Mon, 10 Sep 2018 17:29:02 GMT
|
38
38
|
- request:
|
39
39
|
method: get
|
40
|
-
uri: https://<SCORM_ENGINE_HOST>/ScormEngineInterface/api/v1/ScormEngineGemTesting-default/courses/importJobs/
|
40
|
+
uri: https://<SCORM_ENGINE_HOST>/ScormEngineInterface/api/v1/ScormEngineGemTesting-default/courses/importJobs/08e0a9a6-86b0-4b19-9e23-46d825a4c114
|
41
41
|
body:
|
42
42
|
encoding: US-ASCII
|
43
43
|
string: ''
|
44
44
|
headers:
|
45
|
-
Content-Type:
|
46
|
-
- application/json
|
47
45
|
User-Agent:
|
48
|
-
- ScormEngine Ruby Gem 0.
|
46
|
+
- ScormEngine Ruby Gem 0.6.3
|
49
47
|
Authorization:
|
50
48
|
- Basic <BASIC_AUTH>
|
51
49
|
response:
|
@@ -56,7 +54,7 @@ http_interactions:
|
|
56
54
|
content-type:
|
57
55
|
- application/json
|
58
56
|
date:
|
59
|
-
-
|
57
|
+
- Mon, 10 Sep 2018 17:29:02 GMT
|
60
58
|
server:
|
61
59
|
- nginx
|
62
60
|
vary:
|
@@ -69,18 +67,16 @@ http_interactions:
|
|
69
67
|
encoding: ASCII-8BIT
|
70
68
|
string: '{"status":"RUNNING","parserWarnings":[],"courseLanguages":[]}'
|
71
69
|
http_version:
|
72
|
-
recorded_at:
|
70
|
+
recorded_at: Mon, 10 Sep 2018 17:29:02 GMT
|
73
71
|
- request:
|
74
72
|
method: get
|
75
|
-
uri: https://<SCORM_ENGINE_HOST>/ScormEngineInterface/api/v1/ScormEngineGemTesting-default/courses/importJobs/
|
73
|
+
uri: https://<SCORM_ENGINE_HOST>/ScormEngineInterface/api/v1/ScormEngineGemTesting-default/courses/importJobs/08e0a9a6-86b0-4b19-9e23-46d825a4c114
|
76
74
|
body:
|
77
75
|
encoding: US-ASCII
|
78
76
|
string: ''
|
79
77
|
headers:
|
80
|
-
Content-Type:
|
81
|
-
- application/json
|
82
78
|
User-Agent:
|
83
|
-
- ScormEngine Ruby Gem 0.
|
79
|
+
- ScormEngine Ruby Gem 0.6.3
|
84
80
|
Authorization:
|
85
81
|
- Basic <BASIC_AUTH>
|
86
82
|
response:
|
@@ -91,33 +87,64 @@ http_interactions:
|
|
91
87
|
content-type:
|
92
88
|
- application/json
|
93
89
|
date:
|
94
|
-
-
|
90
|
+
- Mon, 10 Sep 2018 17:29:08 GMT
|
95
91
|
server:
|
96
92
|
- nginx
|
97
93
|
vary:
|
98
94
|
- Accept-Encoding
|
99
95
|
content-length:
|
100
|
-
- '
|
96
|
+
- '75'
|
101
97
|
connection:
|
102
98
|
- Close
|
103
99
|
body:
|
104
100
|
encoding: ASCII-8BIT
|
105
|
-
string: '{"
|
106
|
-
Successful","courseTitle":"Golf Explained - Run-time Basic Calls - NEW VERSION","webPathToCourse":"/courses/ScormEngineGemTesting-default/a-valid-course-url/1","parserWarnings":[],"courseLanguages":[],"course":{"id":"a-valid-course-url","version":1,"title":"Golf
|
107
|
-
Explained - Run-time Basic Calls","courseLearningStandard":"SCORM_2004_3RD_EDITION","registrationCount":0,"updated":"2018-07-24T20:36:51.197Z"}}'
|
101
|
+
string: '{"status":"RUNNING","parserWarnings":[],"courseLanguages":[]}'
|
108
102
|
http_version:
|
109
|
-
recorded_at:
|
103
|
+
recorded_at: Mon, 10 Sep 2018 17:29:08 GMT
|
110
104
|
- request:
|
111
105
|
method: get
|
112
|
-
uri: https://<SCORM_ENGINE_HOST>/ScormEngineInterface/api/v1/ScormEngineGemTesting-default/courses/importJobs/
|
106
|
+
uri: https://<SCORM_ENGINE_HOST>/ScormEngineInterface/api/v1/ScormEngineGemTesting-default/courses/importJobs/08e0a9a6-86b0-4b19-9e23-46d825a4c114
|
113
107
|
body:
|
114
108
|
encoding: US-ASCII
|
115
109
|
string: ''
|
116
110
|
headers:
|
117
|
-
|
111
|
+
User-Agent:
|
112
|
+
- ScormEngine Ruby Gem 0.6.3
|
113
|
+
Authorization:
|
114
|
+
- Basic <BASIC_AUTH>
|
115
|
+
response:
|
116
|
+
status:
|
117
|
+
code: 200
|
118
|
+
message: ''
|
119
|
+
headers:
|
120
|
+
content-type:
|
118
121
|
- application/json
|
122
|
+
date:
|
123
|
+
- Mon, 10 Sep 2018 17:29:13 GMT
|
124
|
+
server:
|
125
|
+
- nginx
|
126
|
+
vary:
|
127
|
+
- Accept-Encoding
|
128
|
+
content-length:
|
129
|
+
- '326'
|
130
|
+
connection:
|
131
|
+
- Close
|
132
|
+
body:
|
133
|
+
encoding: ASCII-8BIT
|
134
|
+
string: '{"jobId":"08e0a9a6-86b0-4b19-9e23-46d825a4c114","status":"COMPLETE","message":"Import
|
135
|
+
Successful","courseTitle":"Golf Explained - Run-time Basic Calls","webPathToCourse":"/courses/ScormEngineGemTesting-default/a-valid-course-url/0","parserWarnings":[],"courseLanguages":[],"course":{"id":"a-valid-course-url","version":0,"title":"Golf
|
136
|
+
Explained - Run-time Basic Calls","courseLearningStandard":"SCORM_2004_3RD_EDITION","registrationCount":0,"updated":"2018-09-10T17:29:09.919Z"}}'
|
137
|
+
http_version:
|
138
|
+
recorded_at: Mon, 10 Sep 2018 17:29:13 GMT
|
139
|
+
- request:
|
140
|
+
method: get
|
141
|
+
uri: https://<SCORM_ENGINE_HOST>/ScormEngineInterface/api/v1/ScormEngineGemTesting-default/courses/importJobs/08e0a9a6-86b0-4b19-9e23-46d825a4c114
|
142
|
+
body:
|
143
|
+
encoding: US-ASCII
|
144
|
+
string: ''
|
145
|
+
headers:
|
119
146
|
User-Agent:
|
120
|
-
- ScormEngine Ruby Gem 0.
|
147
|
+
- ScormEngine Ruby Gem 0.6.3
|
121
148
|
Authorization:
|
122
149
|
- Basic <BASIC_AUTH>
|
123
150
|
response:
|
@@ -128,20 +155,20 @@ http_interactions:
|
|
128
155
|
content-type:
|
129
156
|
- application/json
|
130
157
|
date:
|
131
|
-
-
|
158
|
+
- Mon, 10 Sep 2018 17:29:14 GMT
|
132
159
|
server:
|
133
160
|
- nginx
|
134
161
|
vary:
|
135
162
|
- Accept-Encoding
|
136
163
|
content-length:
|
137
|
-
- '
|
164
|
+
- '326'
|
138
165
|
connection:
|
139
166
|
- Close
|
140
167
|
body:
|
141
168
|
encoding: ASCII-8BIT
|
142
|
-
string: '{"jobId":"
|
143
|
-
Successful","courseTitle":"Golf Explained - Run-time Basic Calls
|
144
|
-
Explained - Run-time Basic Calls","courseLearningStandard":"SCORM_2004_3RD_EDITION","registrationCount":0,"updated":"2018-
|
169
|
+
string: '{"jobId":"08e0a9a6-86b0-4b19-9e23-46d825a4c114","status":"COMPLETE","message":"Import
|
170
|
+
Successful","courseTitle":"Golf Explained - Run-time Basic Calls","webPathToCourse":"/courses/ScormEngineGemTesting-default/a-valid-course-url/0","parserWarnings":[],"courseLanguages":[],"course":{"id":"a-valid-course-url","version":0,"title":"Golf
|
171
|
+
Explained - Run-time Basic Calls","courseLearningStandard":"SCORM_2004_3RD_EDITION","registrationCount":0,"updated":"2018-09-10T17:29:09.919Z"}}'
|
145
172
|
http_version:
|
146
|
-
recorded_at:
|
173
|
+
recorded_at: Mon, 10 Sep 2018 17:29:14 GMT
|
147
174
|
recorded_with: VCR 4.0.0
|
@@ -5,12 +5,45 @@ http_interactions:
|
|
5
5
|
uri: https://<SCORM_ENGINE_HOST>/ScormEngineInterface/api/v1/ScormEngineGemTesting-default/courses/importJobs?course=an-invalid-course-url&mayCreateNewVersion=true
|
6
6
|
body:
|
7
7
|
encoding: UTF-8
|
8
|
-
string: '{"url":"https://github.com/phallstrom/scorm_engine/raw/master/spec/fixtures/zip/non-existent-key.zip"
|
8
|
+
string: '{"courseName":"an-invalid-course-url","url":"https://github.com/phallstrom/scorm_engine/raw/master/spec/fixtures/zip/non-existent-key.zip"}'
|
9
9
|
headers:
|
10
|
+
User-Agent:
|
11
|
+
- ScormEngine Ruby Gem 0.6.3
|
12
|
+
Authorization:
|
13
|
+
- Basic <BASIC_AUTH>
|
10
14
|
Content-Type:
|
11
15
|
- application/json
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: ''
|
20
|
+
headers:
|
21
|
+
content-type:
|
22
|
+
- application/json
|
23
|
+
date:
|
24
|
+
- Mon, 10 Sep 2018 17:29:15 GMT
|
25
|
+
server:
|
26
|
+
- nginx
|
27
|
+
vary:
|
28
|
+
- Accept-Encoding
|
29
|
+
content-length:
|
30
|
+
- '133'
|
31
|
+
connection:
|
32
|
+
- Close
|
33
|
+
body:
|
34
|
+
encoding: ASCII-8BIT
|
35
|
+
string: '{"result":"151cfd1f-8761-4b21-9d7a-972d99b8fd59","importResult":{"status":"RUNNING","parserWarnings":[],"courseLanguages":[]}}'
|
36
|
+
http_version:
|
37
|
+
recorded_at: Mon, 10 Sep 2018 17:29:15 GMT
|
38
|
+
- request:
|
39
|
+
method: get
|
40
|
+
uri: https://<SCORM_ENGINE_HOST>/ScormEngineInterface/api/v1/ScormEngineGemTesting-default/courses/importJobs/151cfd1f-8761-4b21-9d7a-972d99b8fd59
|
41
|
+
body:
|
42
|
+
encoding: US-ASCII
|
43
|
+
string: ''
|
44
|
+
headers:
|
12
45
|
User-Agent:
|
13
|
-
- ScormEngine Ruby Gem 0.
|
46
|
+
- ScormEngine Ruby Gem 0.6.3
|
14
47
|
Authorization:
|
15
48
|
- Basic <BASIC_AUTH>
|
16
49
|
response:
|
@@ -21,31 +54,29 @@ http_interactions:
|
|
21
54
|
content-type:
|
22
55
|
- application/json
|
23
56
|
date:
|
24
|
-
-
|
57
|
+
- Mon, 10 Sep 2018 17:29:15 GMT
|
25
58
|
server:
|
26
59
|
- nginx
|
27
60
|
vary:
|
28
61
|
- Accept-Encoding
|
29
62
|
content-length:
|
30
|
-
- '
|
63
|
+
- '75'
|
31
64
|
connection:
|
32
65
|
- Close
|
33
66
|
body:
|
34
67
|
encoding: ASCII-8BIT
|
35
|
-
string: '{"
|
68
|
+
string: '{"status":"RUNNING","parserWarnings":[],"courseLanguages":[]}'
|
36
69
|
http_version:
|
37
|
-
recorded_at:
|
70
|
+
recorded_at: Mon, 10 Sep 2018 17:29:15 GMT
|
38
71
|
- request:
|
39
72
|
method: get
|
40
|
-
uri: https://<SCORM_ENGINE_HOST>/ScormEngineInterface/api/v1/ScormEngineGemTesting-default/courses/importJobs/
|
73
|
+
uri: https://<SCORM_ENGINE_HOST>/ScormEngineInterface/api/v1/ScormEngineGemTesting-default/courses/importJobs/151cfd1f-8761-4b21-9d7a-972d99b8fd59
|
41
74
|
body:
|
42
75
|
encoding: US-ASCII
|
43
76
|
string: ''
|
44
77
|
headers:
|
45
|
-
Content-Type:
|
46
|
-
- application/json
|
47
78
|
User-Agent:
|
48
|
-
- ScormEngine Ruby Gem 0.
|
79
|
+
- ScormEngine Ruby Gem 0.6.3
|
49
80
|
Authorization:
|
50
81
|
- Basic <BASIC_AUTH>
|
51
82
|
response:
|
@@ -56,7 +87,7 @@ http_interactions:
|
|
56
87
|
content-type:
|
57
88
|
- application/json
|
58
89
|
date:
|
59
|
-
-
|
90
|
+
- Mon, 10 Sep 2018 17:29:20 GMT
|
60
91
|
server:
|
61
92
|
- nginx
|
62
93
|
vary:
|
@@ -67,7 +98,7 @@ http_interactions:
|
|
67
98
|
- Close
|
68
99
|
body:
|
69
100
|
encoding: ASCII-8BIT
|
70
|
-
string: '{"jobId":"
|
101
|
+
string: '{"jobId":"151cfd1f-8761-4b21-9d7a-972d99b8fd59","status":"ERROR","message":"https://github.com/phallstrom/scorm_engine/raw/master/spec/fixtures/zip/non-existent-key.zip
|
71
102
|
returned (404) <!DOCTYPE html>\n<html>\n <head>\n <meta http-equiv=\"Content-type\"
|
72
103
|
content=\"text/html; charset=utf-8\">\n <meta http-equiv=\"Content-Security-Policy\"
|
73
104
|
content=\"default-src ''none''; base-uri ''self''; connect-src ''self''; form-action
|
@@ -178,18 +209,16 @@ http_interactions:
|
|
178
209
|
title=\"\" alt=\"\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQUM1QkUxRUI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQUM1QkUxRkI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxNkJENjdGQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxNkJENjgwQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hfPRaQAAB6lJREFUeNrsW2mM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\">\n </a>\n </div>\n\n <script
|
179
210
|
type=\"text/javascript\" src=\"/_error.js\"></script>\n </body>\n</html>\n","courseTitle":"","parserWarnings":[],"courseLanguages":[]}'
|
180
211
|
http_version:
|
181
|
-
recorded_at:
|
212
|
+
recorded_at: Mon, 10 Sep 2018 17:29:21 GMT
|
182
213
|
- request:
|
183
214
|
method: get
|
184
|
-
uri: https://<SCORM_ENGINE_HOST>/ScormEngineInterface/api/v1/ScormEngineGemTesting-default/courses/importJobs/
|
215
|
+
uri: https://<SCORM_ENGINE_HOST>/ScormEngineInterface/api/v1/ScormEngineGemTesting-default/courses/importJobs/151cfd1f-8761-4b21-9d7a-972d99b8fd59
|
185
216
|
body:
|
186
217
|
encoding: US-ASCII
|
187
218
|
string: ''
|
188
219
|
headers:
|
189
|
-
Content-Type:
|
190
|
-
- application/json
|
191
220
|
User-Agent:
|
192
|
-
- ScormEngine Ruby Gem 0.
|
221
|
+
- ScormEngine Ruby Gem 0.6.3
|
193
222
|
Authorization:
|
194
223
|
- Basic <BASIC_AUTH>
|
195
224
|
response:
|
@@ -200,7 +229,7 @@ http_interactions:
|
|
200
229
|
content-type:
|
201
230
|
- application/json
|
202
231
|
date:
|
203
|
-
-
|
232
|
+
- Mon, 10 Sep 2018 17:29:21 GMT
|
204
233
|
server:
|
205
234
|
- nginx
|
206
235
|
vary:
|
@@ -211,7 +240,7 @@ http_interactions:
|
|
211
240
|
- Close
|
212
241
|
body:
|
213
242
|
encoding: ASCII-8BIT
|
214
|
-
string: '{"jobId":"
|
243
|
+
string: '{"jobId":"151cfd1f-8761-4b21-9d7a-972d99b8fd59","status":"ERROR","message":"https://github.com/phallstrom/scorm_engine/raw/master/spec/fixtures/zip/non-existent-key.zip
|
215
244
|
returned (404) <!DOCTYPE html>\n<html>\n <head>\n <meta http-equiv=\"Content-type\"
|
216
245
|
content=\"text/html; charset=utf-8\">\n <meta http-equiv=\"Content-Security-Policy\"
|
217
246
|
content=\"default-src ''none''; base-uri ''self''; connect-src ''self''; form-action
|
@@ -322,5 +351,5 @@ http_interactions:
|
|
322
351
|
title=\"\" alt=\"\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQUM1QkUxRUI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQUM1QkUxRkI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxNkJENjdGQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxNkJENjgwQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hfPRaQAAB6lJREFUeNrsW2mM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\">\n </a>\n </div>\n\n <script
|
323
352
|
type=\"text/javascript\" src=\"/_error.js\"></script>\n </body>\n</html>\n","courseTitle":"","parserWarnings":[],"courseLanguages":[]}'
|
324
353
|
http_version:
|
325
|
-
recorded_at:
|
354
|
+
recorded_at: Mon, 10 Sep 2018 17:29:21 GMT
|
326
355
|
recorded_with: VCR 4.0.0
|