quiz_api_client 2.0.0 → 2.1.0

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
  SHA1:
3
- metadata.gz: 4c1e14b9c229985dd69bc7284699715cda82025d
4
- data.tar.gz: 30b5c1d20b6f340594c10bd33c1cef01fe9266ea
3
+ metadata.gz: 70e713b4e5b2500e94c9b5a2c3d37a199cbe217f
4
+ data.tar.gz: 23d8d25b11174dd9b62073be217bcf3ba446f378
5
5
  SHA512:
6
- metadata.gz: 06cdb297c1abf092b5f6da8c4f374515e9bf46e9f6006754aefb0451ad4225f3e795cfc8dab91ef627a58712daa3e1a9e516d4539a2799aaa01a21126754b87d
7
- data.tar.gz: bc41f42733af1782ee302603f340b370756dc93581e4f3ec2fd1a79236e096d3503a7ac27b2c0ce9830057a9b4804e71c5f757bffabc3673ba9c1b49755d8f62
6
+ metadata.gz: 1432971a3e6b77b29e10cabb6336076e8d714fcbe030b1722d9f2c04d76f9e5ad4d96048c325a5f28e432db917bd31cee8d6179995222a52784448ab309d5b2d
7
+ data.tar.gz: 20ab1c0813f2bf9a9be32f3132f333a1ecf9144669461a2e68ebcd873010fdd714925a1ada23036e70e27749fcd696fde0553b8038d5a30863f9ae14e5529154
data/build.sh CHANGED
@@ -5,7 +5,8 @@ set -ex
5
5
  function save_pact_files_to_s3()
6
6
  {
7
7
  echo "Saving pact files to S3..."
8
- aws s3 cp pacts s3://ci-asset-cache/pacts/${JOB_NAME} --recursive --only-show-errors --region us-east-1
8
+ folder=${1:-latest}
9
+ aws s3 cp pacts s3://ci-asset-cache/pacts/${JOB_NAME}/${folder} --recursive --only-show-errors --region us-east-1
9
10
  }
10
11
 
11
12
  function cleanup() {
@@ -28,4 +29,6 @@ docker-compose run --name contracts -T contracts-testrunner bundle exec rspec sp
28
29
  docker cp contracts:/usr/src/app/pacts .
29
30
  docker cp contracts:/usr/src/app/log .
30
31
 
31
- save_pact_files_to_s3
32
+ if [[ "${GERRIT_EVENT_TYPE}" == "change-merged" ]]; then
33
+ save_pact_files_to_s3
34
+ fi
@@ -11,47 +11,67 @@ module QuizApiClient
11
11
  @jwt = jwt
12
12
  end
13
13
 
14
- def get(path, query = {})
15
- make_request :get, path, options(query: query)
14
+ def get(path, all: false, query: {})
15
+ return make_request :get, path, query: query unless all
16
+ make_paginated_request :get, path, query: query
16
17
  end
17
18
 
18
19
  def post(path, body = {})
19
- make_request :post, path, options(body: body.to_json)
20
+ make_request :post, path, body: body.to_json
20
21
  end
21
22
 
22
23
  def patch(path, body = {})
23
- make_request :patch, path, options(body: body.to_json)
24
+ make_request :patch, path, body: body.to_json
24
25
  end
25
26
 
26
27
  def put(path, body = {})
27
- make_request :put, path, options(body: body.to_json)
28
+ make_request :put, path, body: body.to_json
28
29
  end
29
30
 
30
31
  def delete(path)
31
- make_request :delete, path, options
32
+ make_request :delete, path
32
33
  end
33
34
 
34
35
  private
35
36
 
36
- def make_request(method, path, options)
37
+ def make_request(method, path, request_options = {})
37
38
  self.class.send(
38
39
  method,
39
40
  "#{uri}#{path}",
40
- options
41
+ default_request_data.merge(request_options)
41
42
  )
42
43
  rescue HTTParty::Error, Errno::ECONNREFUSED, Net::ReadTimeout => e
43
44
  raise RequestFailed, e.message
44
45
  end
45
46
 
46
- def options(opts = {})
47
- { headers: headers }.merge(opts)
47
+ def make_paginated_request(method, path, request_options)
48
+ entities = []
49
+ request_path = path
50
+
51
+ until request_path.nil? do
52
+ resp = make_request(method, request_path, request_options)
53
+ entities.concat(resp.parsed_response)
54
+ request_path = next_page(resp)
55
+ end
56
+ entities
57
+ end
58
+
59
+ def default_request_data
60
+ {
61
+ headers: {
62
+ 'Authorization' => jwt,
63
+ 'AuthType' => 'Signature',
64
+ 'Accept' => 'application/json',
65
+ 'Content-Type' => 'application/json'
66
+ }
67
+ }
48
68
  end
49
69
 
50
- def headers
51
- { 'Authorization' => jwt,
52
- 'AuthType' => 'Signature',
53
- 'Accept' => 'application/json',
54
- 'Content-Type' => 'application/json' }
70
+ def next_page(response)
71
+ links = LinkHeader.parse(response.headers['link']).links
72
+
73
+ next_link = links.find { |link| link['rel'] == 'next' }
74
+ next_link.href if next_link
55
75
  end
56
76
  end
57
77
  end
@@ -1,18 +1,17 @@
1
1
  module QuizApiClient::Services
2
2
  class ItemAnalysesService < BaseApiService
3
- def list(params:, token: nil)
3
+ def list(params:, token: nil, all: false)
4
4
  raise 'Quiz Id Required' unless params.key?(:quiz_id)
5
5
  client(token: token).get(
6
6
  "/api/quizzes/#{params[:quiz_id]}/stats/item_analyses",
7
- {}
7
+ all: all
8
8
  )
9
9
  end
10
10
 
11
11
  def get(params:, token: nil)
12
12
  raise 'Quiz Id and Item Id are Required' unless params.key?(:id) && params.key?(:quiz_id)
13
13
  client(token: token).get(
14
- "/api/quizzes/#{params[:quiz_id]}/stats/item_analyses/#{params[:id]}",
15
- {}
14
+ "/api/quizzes/#{params[:quiz_id]}/stats/item_analyses/#{params[:id]}"
16
15
  )
17
16
  end
18
17
  end
@@ -10,7 +10,7 @@ module QuizApiClient::Services
10
10
  def post_to_quiz_api(params:, token:)
11
11
  client(token: token).post(
12
12
  "/api/quizzes/#{params[:quiz_id]}/qti_imports",
13
- qti_import: params
13
+ query: { qti_import: params }
14
14
  )
15
15
  end
16
16
  end
@@ -9,8 +9,7 @@ module QuizApiClient::Services
9
9
 
10
10
  def get_from_quiz_api(params:, token:)
11
11
  client(token: token).get(
12
- "/api/quizzes/#{params[:quiz_id]}/stats/quiz_analysis",
13
- {}
12
+ "/api/quizzes/#{params[:quiz_id]}/stats/quiz_analysis"
14
13
  )
15
14
  end
16
15
  end
@@ -1,15 +1,16 @@
1
1
  module QuizApiClient::Services
2
2
  class QuizEntriesService < BaseApiService
3
- def list(params:, token: nil)
3
+ def list(params:, token: nil, all: false)
4
4
  raise 'Quiz Id Required' unless params && params[:id]
5
- get_from_quiz_api(params: params, token: token)
5
+ get_from_quiz_api(params: params, token: token, all: all)
6
6
  end
7
7
 
8
8
  private
9
9
 
10
- def get_from_quiz_api(params:, token:)
10
+ def get_from_quiz_api(params:, token:, all:)
11
11
  client(token: token).get(
12
- "/api/quizzes/#{params[:id]}/quiz_entries"
12
+ "/api/quizzes/#{params[:id]}/quiz_entries",
13
+ all: all
13
14
  )
14
15
  end
15
16
  end
@@ -1,16 +1,16 @@
1
1
  module QuizApiClient::Services
2
2
  class QuizSessionEventsService < BaseApiService
3
- def list(params:, token: nil)
3
+ def list(params:, token: nil, all: false)
4
4
  raise 'Quiz Session Id Required' unless params.key?(:quiz_session_id)
5
- get_from_quiz_api(params: params, token: token)
5
+ get_from_quiz_api(params: params, token: token, all: all)
6
6
  end
7
7
 
8
8
  private
9
9
 
10
- def get_from_quiz_api(params:, token:)
10
+ def get_from_quiz_api(params:, token:, all:)
11
11
  client(token: token).get(
12
12
  "/api/quiz_sessions/#{params[:quiz_session_id]}/quiz_session_events",
13
- {}
13
+ all: all
14
14
  )
15
15
  end
16
16
  end
@@ -4,8 +4,8 @@ module QuizApiClient::Services
4
4
  post_to_quiz_api(params: params, token: token)
5
5
  end
6
6
 
7
- def list(params:, token: nil)
8
- get_from_quiz_api(params: params, token: token)
7
+ def list(params:, token: nil, all: false)
8
+ get_from_quiz_api(params: params, token: token, all: all)
9
9
  end
10
10
 
11
11
  private
@@ -17,10 +17,11 @@ module QuizApiClient::Services
17
17
  )
18
18
  end
19
19
 
20
- def get_from_quiz_api(params:, token:)
20
+ def get_from_quiz_api(params:, token:, all:)
21
21
  client(token: token).get(
22
22
  '/api/quizzes',
23
- params
23
+ all: all,
24
+ query: params
24
25
  )
25
26
  end
26
27
  end
@@ -1,16 +1,17 @@
1
1
  module QuizApiClient::Services
2
2
  class SessionItemResultsService < BaseApiService
3
- def list(params:, token: nil)
3
+ def list(params:, token: nil, all: false)
4
4
  raise 'QuizSession Id Required' unless params && params[:quiz_session_id]
5
5
  raise 'QuizSessionResult Id Required' unless params && params[:quiz_session_result_id]
6
- get_from_quiz_api(params: params, token: token)
6
+ get_from_quiz_api(params: params, token: token, all: all)
7
7
  end
8
8
 
9
9
  private
10
10
 
11
- def get_from_quiz_api(params:, token:)
11
+ def get_from_quiz_api(params:, token:, all:)
12
12
  client(token: token).get(
13
- "/api/quiz_sessions/#{params[:quiz_session_id]}/results/#{params[:quiz_session_result_id]}/session_item_results"
13
+ "/api/quiz_sessions/#{params[:quiz_session_id]}/results/#{params[:quiz_session_result_id]}/session_item_results",
14
+ all: all
14
15
  )
15
16
  end
16
17
  end
@@ -1,3 +1,3 @@
1
1
  module QuizApiClient
2
- VERSION = '2.0.0'.freeze
2
+ VERSION = '2.1.0'.freeze
3
3
  end
@@ -17,6 +17,7 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.add_dependency 'httparty', '0.14.0'
19
19
  spec.add_dependency 'jwt'
20
+ spec.add_dependency 'link_header'
20
21
 
21
22
  spec.add_development_dependency 'bundler', '~> 1.12'
22
23
  spec.add_development_dependency 'simplecov'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quiz_api_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Wang
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-29 00:00:00.000000000 Z
11
+ date: 2017-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: link_header
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement