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 +4 -4
- data/build.sh +5 -2
- data/lib/quiz_api_client/http_client.rb +35 -15
- data/lib/quiz_api_client/services/item_analyses_service.rb +3 -4
- data/lib/quiz_api_client/services/qti_imports_service.rb +1 -1
- data/lib/quiz_api_client/services/quiz_analyses_service.rb +1 -2
- data/lib/quiz_api_client/services/quiz_entries_service.rb +5 -4
- data/lib/quiz_api_client/services/quiz_session_events_service.rb +4 -4
- data/lib/quiz_api_client/services/quizzes_service.rb +5 -4
- data/lib/quiz_api_client/services/session_item_results_service.rb +5 -4
- data/lib/quiz_api_client/version.rb +1 -1
- data/quiz_api_client.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70e713b4e5b2500e94c9b5a2c3d37a199cbe217f
|
4
|
+
data.tar.gz: 23d8d25b11174dd9b62073be217bcf3ba446f378
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
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,
|
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,
|
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,
|
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,
|
28
|
+
make_request :put, path, body: body.to_json
|
28
29
|
end
|
29
30
|
|
30
31
|
def delete(path)
|
31
|
-
make_request :delete, path
|
32
|
+
make_request :delete, path
|
32
33
|
end
|
33
34
|
|
34
35
|
private
|
35
36
|
|
36
|
-
def make_request(method, path,
|
37
|
+
def make_request(method, path, request_options = {})
|
37
38
|
self.class.send(
|
38
39
|
method,
|
39
40
|
"#{uri}#{path}",
|
40
|
-
|
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
|
47
|
-
|
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
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
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
|
@@ -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
|
-
|
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
|
data/quiz_api_client.gemspec
CHANGED
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.
|
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-
|
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
|