quiz_api_client 2.0.0 → 2.1.0

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