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 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+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: 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