scorm_engine 0.6.3 → 0.6.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 84dbb575f6c280c28cdd591bed82b4d5f208f0a2f8a0d505b2fbbdbb46f37311
4
- data.tar.gz: b60cd4cd6e1f823c9da3105e06391d322002230fe42c3e1479a7a7a34ea6d2b0
3
+ metadata.gz: a828b4c9aa75bf10b9fc11da7bdb3b736a86dde21d37fdd50d81b5cf283f377a
4
+ data.tar.gz: f4641ea80c941a4762c8e568f2633a68444a1430e066dc5f019a421b2c0a6a2f
5
5
  SHA512:
6
- metadata.gz: a908341227a9c67ee3c65b58c2bd0dd2232e9ce014146f866e2c238a404bda7da36c97086211f38a59e274d1d077ca96e599e4880afd9b40156df30f15f4180f
7
- data.tar.gz: 89ef5d20c1d7bc5b5652fc2735609e9ed5160fc37cd0d8ff26189f0cf439eff3eda64ba0e4328818850caed8917788bfd6282573c060cfcbc817ba67cd704cd7
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 error if not.
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, key[s].
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
- def require_option(haystack, *needles)
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 ArgumentError, "Required option #{needles.join("/")} missing"
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, :url)
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
@@ -40,7 +40,7 @@ module ScormEngine
40
40
  # @attr
41
41
  # The weight this interaction carries relative to the other interactions
42
42
  # in the SCO.
43
- # @return [String]
43
+ # @return [Float]
44
44
  attr_accessor :weighting
45
45
 
46
46
  # @attr
@@ -1,3 +1,3 @@
1
1
  module ScormEngine
2
- VERSION = "0.6.3".freeze
2
+ VERSION = "0.6.4".freeze
3
3
  end
@@ -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","courseName":"a-valid-course-url"}'
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.1.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
- - Tue, 24 Jul 2018 20:36:47 GMT
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":"ac363e8a-6ee7-459c-9aae-05f32418ca56","importResult":{"status":"RUNNING","parserWarnings":[],"courseLanguages":[]}}'
35
+ string: '{"result":"08e0a9a6-86b0-4b19-9e23-46d825a4c114","importResult":{"status":"RUNNING","parserWarnings":[],"courseLanguages":[]}}'
36
36
  http_version:
37
- recorded_at: Tue, 24 Jul 2018 20:36:48 GMT
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/ac363e8a-6ee7-459c-9aae-05f32418ca56
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.1.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
- - Tue, 24 Jul 2018 20:36:48 GMT
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: Tue, 24 Jul 2018 20:36:48 GMT
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/ac363e8a-6ee7-459c-9aae-05f32418ca56
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.1.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
- - Tue, 24 Jul 2018 20:36:53 GMT
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
- - '340'
96
+ - '75'
101
97
  connection:
102
98
  - Close
103
99
  body:
104
100
  encoding: ASCII-8BIT
105
- string: '{"jobId":"ac363e8a-6ee7-459c-9aae-05f32418ca56","status":"COMPLETE","message":"Import
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: Tue, 24 Jul 2018 20:36:53 GMT
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/ac363e8a-6ee7-459c-9aae-05f32418ca56
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
- Content-Type:
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.1.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
- - Tue, 24 Jul 2018 20:36:54 GMT
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
- - '340'
164
+ - '326'
138
165
  connection:
139
166
  - Close
140
167
  body:
141
168
  encoding: ASCII-8BIT
142
- string: '{"jobId":"ac363e8a-6ee7-459c-9aae-05f32418ca56","status":"COMPLETE","message":"Import
143
- 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
144
- Explained - Run-time Basic Calls","courseLearningStandard":"SCORM_2004_3RD_EDITION","registrationCount":0,"updated":"2018-07-24T20:36:51.197Z"}}'
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: Tue, 24 Jul 2018 20:36:54 GMT
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","courseName":"an-invalid-course-url"}'
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.1.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
- - Tue, 24 Jul 2018 20:36:45 GMT
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
- - '132'
63
+ - '75'
31
64
  connection:
32
65
  - Close
33
66
  body:
34
67
  encoding: ASCII-8BIT
35
- string: '{"result":"a5dd1f01-dac9-48c7-8a30-4accfd42ffdc","importResult":{"status":"RUNNING","parserWarnings":[],"courseLanguages":[]}}'
68
+ string: '{"status":"RUNNING","parserWarnings":[],"courseLanguages":[]}'
36
69
  http_version:
37
- recorded_at: Tue, 24 Jul 2018 20:36:45 GMT
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/a5dd1f01-dac9-48c7-8a30-4accfd42ffdc
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.1.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
- - Tue, 24 Jul 2018 20:36:46 GMT
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":"a5dd1f01-dac9-48c7-8a30-4accfd42ffdc","status":"ERROR","message":"https://github.com/phallstrom/scorm_engine/raw/master/spec/fixtures/zip/non-existent-key.zip
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+hfPRaQAAB6lJREFUeNrsW2mME2UYbodtt+2222u35QheoCCYGBQligIJgkZJNPzgigoaTEj8AdFEMfADfyABkgWiiWcieK4S+QOiHAYUj2hMNKgYlEujpNttu9vttbvdw+chU1K6M535pt3ubHCSyezR+b73eb73+t7vrfXsufOW4bz6+vom9/b23ovnNNw34b5xYGAgODg46Mbt4mesVmsWd1qSpHhdXd2fuP/Afcput5/A88xwymcdBgLqenp6FuRyuWV4zu/v759QyWBjxoz5t76+/gun09mK5xFyakoCAPSaTCazNpvNPoYVbh6O1YKGRF0u13sNDQ27QMzfpiAAKj0lnU6/gBVfAZW2WWpwwVzy0IgP3G73FpjI6REhAGA9qVRqA1b9mVoBVyIC2tDi8Xg24+dUzQiAbS/s7Ox8G2o/3mKCC+Zw0efzPQEfcVjYrARX3dbV1bUtHo8fMgt42f+Mp0yUTVQbdWsAHVsikdiHkHaPxcQXQufXgUBgMRxme9U0AAxfH4vFvjM7eF6UkbJS5qoQwEQGA57Ac5JllFyUVZZ5ckUEgMVxsK2jlSYzI+QXJsiyjzNEAJyJAzb/KQa41jJKL8pODMQiTEAymXw5n8/P0IjD3bh7Rgog59aanxiIRTVvV/oj0tnHca/WMrVwODwB3raTGxzkBg/gnZVapFV62Wy2n5AO70HM/5wbJ0QnXyQSaVPDIuNZzY0V3ntHMwxiwHA0Gj2Np7ecIBDgaDAYXKCQJM1DhrgJ3nhulcPbl8j4NmHe46X/g60fwbz3aewjkqFQaAqebWU1AOqyQwt8Id6qEHMc97zu7u7FGGsn7HAiVuosVw7P35C1nccdgSCxop1dHeZswmfHMnxBo6ZTk+jN8dl/vF7vWofDsa+MLN9oEUBMxOb3+1eoEsBVw6Zmua49r8YmhAKDiEPcMwBsxMiqQ+ixzPFxZyqRpXARG/YOr1ObFJ0gUskXBbamcR1OKmMUvDxHRAu8/LmY3jFLMUpFqz9HxG65smYJdyKyECOxDiEAe/p1gjF2oonivZAsxVgl2daa4EQWCW6J55qFAFFZiJWYLxNQy2qOSUzGRsyXCUDIeliwAHEO4WSlWQBRFoZakXcKmCXmyXAKs0Ve9vl8q42WoIYpJU4hV3hKcNs8m9gl7p/xQ73eF5kB4j5mNrWmTJRNwAzqiV1CxjVTZCIkEq+Z1bZFZSN2CenmVAFVy4Plz8xKAGWjjAKFk6lCBMDR/MJjLLMSQNm43xAiQKTaA+9/wewhDjL+JVI1kkTSSOTcKbMTwPqESAot6dn6Fr1gHwVJju6IRuyiByPuUUBAg5DGkAgBmxlvdgIEK9gDkohdY/BJo4CAG0R8miRSsGABkgVQs4KXu098IgUXSSRsFAoKZiVAVDY2WUiiPTjYRi41KwGisrGsLtlsth8Fiwnz2fBkQvWfRtlE3iF2yW63/yCacXZ1dW02GwGyTFaRd4idJnCKHRaCxYRHoG5LTKT6SyiToP1fJHbmAYPYRR0UnZQtMnA6s0zg+GZBlt0Gdo7EPHgpE3Q6nZ8YyLhc8Xj8MJh/aKTAY+5FPAKHLE7RdwuYJZmNwzyCMkBCYyKROJBMJl9B/PXXCjjmCmDOVzH3fiPpObEWGqoKe4EBl8v1hlqsdLvd23mkxHM9pc9kMpmno9HoeTii7ewbHEZPPx1ztLS1tV3AnGuMjiNjvbQFuHw6zDo5By7dTPAQNBgMLrRarTkSls1mnwT7uwp9virx9QzbW/HuV/j5d/b+6jniKlllP8lkeONJDk+dq9GsQTnC4fB1heO0K47Hwe7WdDr9nAKgXwOBwHI+C45Htj1d6sd429TUNEcmUdc+PRaLHcvn87dXW4ugzdsaGxufL94NFv9zi1J7GVbhlvb2dnaJ3SVrxfc+n2+NTsZ7/H7/Mr3g5XdSIHyJSH1PZ+7fToyl2+ErqilgZ4NaLYB9goVGaHjR93Hv1ZrU4XDsFT20kH3PObzbWk0CgG1jacVIUnAQb9F+VexyLMzkpcLv0IJV7AHQIOCAUYHx7v5qgScmYHtTqSAyZLEJTK22Bie4iq3xsqpm4SAf9Hq9a2DnJ4uLK3SEULcdRvp3i3zHySqpficxEdsQc1NrlYXXvR+O7qASSezXB+h1SuUomgg9LL8BUoV4749EIolKh+EiqWmqVEZlDgHks2pxHw7xTqUQw9J5NcAXOK10AGIoZ6Zli6JY6Z1Q461KoZ4NiKLHarW+KDsxlDUPHZ5zPQZqUVDPJsTqb5n9malbpAh8C2XXDLl62+WZIDFRUlNVOiwencnNU3aQEkL+cDMSoLvZo2fQB7AJssNAuFuvorlDVVkkg2I87+jo2K2QAVphDrfyViK5VqtO34OkaxXCp+7drdDBCAdubm6eidX+2WwqT5komwh4YQLk+H4aE93h8Xg2gvHekQZOGSgLZTLyDTLJ4Lx9/KZWKBSainT4Iy3FqQBfnUZR42PKQFksBr9QKVXCPusD3OiA/RkQ5kP8qV/Jl1WywAp/6+dcmPM2zL1UrUahe4JqfnWWKXIul3uUbfP8njAFLW1OFr3gdFtZ72cNH+PtQT7/brW+NXqJAHh0y9V8/U/A1U7AfwIMAD7mS3pCbuWJAAAAAElFTkSuQmCC\">\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: Tue, 24 Jul 2018 20:36:46 GMT
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/a5dd1f01-dac9-48c7-8a30-4accfd42ffdc
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.1.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
- - Tue, 24 Jul 2018 20:36:46 GMT
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":"a5dd1f01-dac9-48c7-8a30-4accfd42ffdc","status":"ERROR","message":"https://github.com/phallstrom/scorm_engine/raw/master/spec/fixtures/zip/non-existent-key.zip
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: Tue, 24 Jul 2018 20:36:47 GMT
354
+ recorded_at: Mon, 10 Sep 2018 17:29:21 GMT
326
355
  recorded_with: VCR 4.0.0