triviacrack 0.5.1 → 0.6.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/Gemfile.lock +2 -2
- data/lib/triviacrack/api/common.rb +5 -6
- data/lib/triviacrack/api/game.rb +5 -4
- data/lib/triviacrack/api/login.rb +3 -2
- data/lib/triviacrack/api/profile.rb +2 -2
- data/lib/triviacrack/api/question.rb +5 -4
- data/lib/triviacrack/api/user.rb +2 -4
- data/lib/triviacrack/version.rb +1 -1
- data/spec/parsers/category_statistics_parser_spec.rb +3 -3
- data/spec/parsers/game_parser_spec.rb +9 -9
- data/spec/parsers/game_statistics_parser_spec.rb +4 -4
- data/spec/parsers/profile_parser_spec.rb +2 -2
- data/spec/parsers/question_parser_spec.rb +2 -2
- data/spec/parsers/session_parser_spec.rb +1 -1
- data/spec/parsers/user_parser_spec.rb +2 -2
- data/spec/spec_helper.rb +4 -0
- data/triviacrack.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bac625736e1fdbe91e229596d95e3af90c22ea6b7b2de6373717994301bfe3b9
|
4
|
+
data.tar.gz: 37afe95e8d8aa72297e85236c00af489bc6a8502c9f8b3d079062ed7157fec02
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5f407ab7c8f5ca194efe7bdea42f90943b5f41c80fc5e2485f8d891afc076bbca76a0b016b75c9da96d598e436371ee8db7763b3771fd21942052e76825ba0e
|
7
|
+
data.tar.gz: 28d4d34fb76d0fdaaa9c81b00fdf53bc7422406e701cf343275b0a81aebe0faabdb516dcdd1186309fba94bedfe33328111a70e03842c6f5acd17ea5af400fb9
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
triviacrack (0.
|
4
|
+
triviacrack (0.6.0)
|
5
5
|
faraday (~> 1.7.2)
|
6
|
+
json (~> 2.5.1)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: https://rubygems.org/
|
@@ -65,7 +66,6 @@ PLATFORMS
|
|
65
66
|
DEPENDENCIES
|
66
67
|
bundler (~> 2.2.27)
|
67
68
|
fuubar (~> 2.5.1)
|
68
|
-
json (~> 2.5.1)
|
69
69
|
rake (~> 13.0.6)
|
70
70
|
rspec (~> 3.10.0)
|
71
71
|
rspec-its (~> 1.3.0)
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require "json"
|
1
2
|
require "faraday"
|
2
3
|
|
3
4
|
require "triviacrack/errors/request_error"
|
@@ -16,8 +17,7 @@ module TriviaCrack
|
|
16
17
|
# Returns a Faraday Response object with the server's response.
|
17
18
|
# Raises TriviaCrack:Errors::RequestError if the request fails.
|
18
19
|
def get(url, parameters: nil)
|
19
|
-
response = Faraday.get "#{API_HOST}#{url}",
|
20
|
-
headers: default_headers
|
20
|
+
response = Faraday.get "#{API_HOST}#{url}", parameters, default_headers
|
21
21
|
|
22
22
|
check_response url, response
|
23
23
|
end
|
@@ -31,8 +31,7 @@ module TriviaCrack
|
|
31
31
|
# Returns a Faraday Response object with the server's response.
|
32
32
|
# Raises TriviaCrack:Errors::RequestError if the request fails.
|
33
33
|
def post(url, parameters: nil)
|
34
|
-
response = Faraday.post "#{API_HOST}#{url}",
|
35
|
-
headers: default_headers
|
34
|
+
response = Faraday.post "#{API_HOST}#{url}", parameters, default_headers
|
36
35
|
|
37
36
|
check_response url, response
|
38
37
|
end
|
@@ -61,7 +60,7 @@ module TriviaCrack
|
|
61
60
|
#
|
62
61
|
# response - Faraday response returned by the API.
|
63
62
|
#
|
64
|
-
# Returns the response
|
63
|
+
# Returns the response body parsed from JSON
|
65
64
|
# Raises TriviaCrack:Errors::RequestError if the request failed.
|
66
65
|
def check_response(url, response)
|
67
66
|
if not response.status.between? 200, 299
|
@@ -69,7 +68,7 @@ module TriviaCrack
|
|
69
68
|
"Request to #{API_HOST}#{url} failed with code #{response.status}."
|
70
69
|
end
|
71
70
|
|
72
|
-
response
|
71
|
+
JSON.parse(response.body)
|
73
72
|
end
|
74
73
|
end
|
75
74
|
end
|
data/lib/triviacrack/api/game.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require "json"
|
1
2
|
require "triviacrack/api/common"
|
2
3
|
require "triviacrack/parsers/game_parser"
|
3
4
|
|
@@ -21,7 +22,7 @@ module TriviaCrack
|
|
21
22
|
def get_games
|
22
23
|
response = get "/api/users/#{@session.user_id}/dashboard"
|
23
24
|
|
24
|
-
games_data = response
|
25
|
+
games_data = response["list"]
|
25
26
|
|
26
27
|
games = []
|
27
28
|
if games_data
|
@@ -48,7 +49,7 @@ module TriviaCrack
|
|
48
49
|
def get_game(game_id)
|
49
50
|
response = get "/api/users/#{@session.user_id}/games/#{game_id}"
|
50
51
|
|
51
|
-
TriviaCrack::Parsers::GameParser.parse response
|
52
|
+
TriviaCrack::Parsers::GameParser.parse response
|
52
53
|
end
|
53
54
|
|
54
55
|
# Public: Uses the Trivia Crack API to start a new game for the current
|
@@ -62,9 +63,9 @@ module TriviaCrack
|
|
62
63
|
# Raises TriviaCrack::Errors::RequestError if the request fails
|
63
64
|
def start_new_game
|
64
65
|
response = post "/api/users/#{@session.user_id}/games",
|
65
|
-
parameters: { language: "EN" }.
|
66
|
+
parameters: { language: "EN" }.to_json
|
66
67
|
|
67
|
-
TriviaCrack::Parsers::GameParser.parse response
|
68
|
+
TriviaCrack::Parsers::GameParser.parse response
|
68
69
|
end
|
69
70
|
|
70
71
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require "json"
|
1
2
|
require "triviacrack/api/common"
|
2
3
|
require "triviacrack/parsers/session_parser"
|
3
4
|
|
@@ -25,9 +26,9 @@ module TriviaCrack
|
|
25
26
|
response = post "/api/login", parameters: { email: email,
|
26
27
|
password: password,
|
27
28
|
language: "en"
|
28
|
-
}.
|
29
|
+
}.to_json
|
29
30
|
|
30
|
-
@session = TriviaCrack::Parsers::SessionParser.parse response
|
31
|
+
@session = TriviaCrack::Parsers::SessionParser.parse response
|
31
32
|
end
|
32
33
|
|
33
34
|
end
|
@@ -21,7 +21,7 @@ module TriviaCrack
|
|
21
21
|
def get_profile(user_id)
|
22
22
|
response = get "/api/users/#{@session.user_id}/profiles/#{user_id}"
|
23
23
|
|
24
|
-
TriviaCrack::Parsers::ProfileParser.parse response
|
24
|
+
TriviaCrack::Parsers::ProfileParser.parse response
|
25
25
|
end
|
26
26
|
|
27
27
|
# Public: Uses the Trivia Crack API to get the profile of current user.
|
@@ -36,7 +36,7 @@ module TriviaCrack
|
|
36
36
|
response =
|
37
37
|
get "/api/users/#{@session.user_id}/profiles/#{@session.user_id}"
|
38
38
|
|
39
|
-
TriviaCrack::Parsers::ProfileParser.parse response
|
39
|
+
TriviaCrack::Parsers::ProfileParser.parse response
|
40
40
|
end
|
41
41
|
|
42
42
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require "json"
|
1
2
|
require "triviacrack/api/common"
|
2
3
|
require "triviacrack/parsers/game_parser"
|
3
4
|
|
@@ -31,9 +32,9 @@ module TriviaCrack
|
|
31
32
|
answer: answer,
|
32
33
|
category: question.category.upcase
|
33
34
|
}]
|
34
|
-
}.
|
35
|
+
}.to_json
|
35
36
|
|
36
|
-
game = TriviaCrack::Parsers::GameParser.parse response
|
37
|
+
game = TriviaCrack::Parsers::GameParser.parse response
|
37
38
|
|
38
39
|
[game, answer == question.correct_answer]
|
39
40
|
end
|
@@ -72,9 +73,9 @@ module TriviaCrack
|
|
72
73
|
|
73
74
|
response =
|
74
75
|
post "/api/users/#{@session.user_id}/games/#{game_id}/answers",
|
75
|
-
parameters: { type: questions.first.type.upcase, answers: answers }.
|
76
|
+
parameters: { type: questions.first.type.upcase, answers: answers }.to_json
|
76
77
|
|
77
|
-
game = TriviaCrack::Parsers::GameParser.parse response
|
78
|
+
game = TriviaCrack::Parsers::GameParser.parse response
|
78
79
|
|
79
80
|
[game, correct_answers]
|
80
81
|
end
|
data/lib/triviacrack/api/user.rb
CHANGED
@@ -26,9 +26,7 @@ module TriviaCrack
|
|
26
26
|
username = username[1..-1]
|
27
27
|
end
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
body = response.body
|
29
|
+
body = get "/api/search?username=#{username}"
|
32
30
|
|
33
31
|
user_id = false
|
34
32
|
body["list"].each do |user|
|
@@ -48,7 +46,7 @@ module TriviaCrack
|
|
48
46
|
def get_user
|
49
47
|
response = get "/api/users/#{@session.user_id}"
|
50
48
|
|
51
|
-
TriviaCrack::Parsers::UserParser.parse response
|
49
|
+
TriviaCrack::Parsers::UserParser.parse response
|
52
50
|
end
|
53
51
|
|
54
52
|
end
|
data/lib/triviacrack/version.rb
CHANGED
@@ -9,7 +9,7 @@ describe TriviaCrack::Parsers::CategoryStatisticsParser do
|
|
9
9
|
let(:category_data) { raw_data["statistics"]["player_one_statistics"]["category_questions"] }
|
10
10
|
|
11
11
|
context 'when given data from the games API' do
|
12
|
-
let(:raw_data) { SpecData.
|
12
|
+
let(:raw_data) { SpecData.get_json "game.json" }
|
13
13
|
|
14
14
|
it { is_expected.to be_a TriviaCrack::CategoryStatistics }
|
15
15
|
its(:category) { is_expected.to be :geography }
|
@@ -19,7 +19,7 @@ describe TriviaCrack::Parsers::CategoryStatisticsParser do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
context 'when given data from the dashboard API' do
|
22
|
-
let(:raw_data) { SpecData.
|
22
|
+
let(:raw_data) { SpecData.get_json("dashboard.json")["list"][3] }
|
23
23
|
|
24
24
|
it { is_expected.to be_a TriviaCrack::CategoryStatistics }
|
25
25
|
its(:category) { is_expected.to eq :arts }
|
@@ -29,7 +29,7 @@ describe TriviaCrack::Parsers::CategoryStatisticsParser do
|
|
29
29
|
end
|
30
30
|
|
31
31
|
context 'when given data from the answers API' do
|
32
|
-
let(:raw_data) { SpecData.
|
32
|
+
let(:raw_data) { SpecData.get_json "answer.json" }
|
33
33
|
|
34
34
|
it { is_expected.to be_a TriviaCrack::CategoryStatistics }
|
35
35
|
its(:category) { is_expected.to eq :sports }
|
@@ -6,13 +6,13 @@ describe TriviaCrack::Parsers::GameParser do
|
|
6
6
|
|
7
7
|
subject { TriviaCrack::Parsers::GameParser.parse raw_data }
|
8
8
|
|
9
|
-
let(:game_data) { SpecData.
|
10
|
-
let(:dashboard_data) { SpecData.
|
11
|
-
let(:answer_data) { SpecData.
|
12
|
-
let(:new_game_data) { SpecData.
|
9
|
+
let(:game_data) { SpecData.get_json "game.json" }
|
10
|
+
let(:dashboard_data) { SpecData.get_json "dashboard.json" }
|
11
|
+
let(:answer_data) { SpecData.get_json "answer.json" }
|
12
|
+
let(:new_game_data) { SpecData.get_json "new_game.json" }
|
13
13
|
|
14
14
|
context 'when given data from the games API' do
|
15
|
-
let(:raw_data) { SpecData.
|
15
|
+
let(:raw_data) { SpecData.get_json "game.json" }
|
16
16
|
|
17
17
|
it { is_expected.to be_a TriviaCrack::Game }
|
18
18
|
its(:id) { is_expected.to be 1111 }
|
@@ -37,7 +37,7 @@ describe TriviaCrack::Parsers::GameParser do
|
|
37
37
|
end
|
38
38
|
|
39
39
|
context 'when given data from the dashboard API' do
|
40
|
-
let(:raw_data) { SpecData.
|
40
|
+
let(:raw_data) { SpecData.get_json("dashboard.json")["list"][3] }
|
41
41
|
|
42
42
|
it { is_expected.to be_a TriviaCrack::Game }
|
43
43
|
its(:id) { is_expected.to be 1115 }
|
@@ -62,7 +62,7 @@ describe TriviaCrack::Parsers::GameParser do
|
|
62
62
|
end
|
63
63
|
|
64
64
|
context 'when given data from the answers API' do
|
65
|
-
let(:raw_data) { SpecData.
|
65
|
+
let(:raw_data) { SpecData.get_json "answer.json" }
|
66
66
|
|
67
67
|
it { is_expected.to be_a TriviaCrack::Game }
|
68
68
|
its(:id) { is_expected.to be 1111 }
|
@@ -87,7 +87,7 @@ describe TriviaCrack::Parsers::GameParser do
|
|
87
87
|
end
|
88
88
|
|
89
89
|
context 'when given data from the new game API' do
|
90
|
-
let(:raw_data) { SpecData.
|
90
|
+
let(:raw_data) { SpecData.get_json "new_game.json" }
|
91
91
|
|
92
92
|
it { is_expected.to be_a TriviaCrack::Game }
|
93
93
|
its(:id) { is_expected.to be 2222 }
|
@@ -112,7 +112,7 @@ describe TriviaCrack::Parsers::GameParser do
|
|
112
112
|
end
|
113
113
|
|
114
114
|
context 'when given data from the games API and the game is a duel' do
|
115
|
-
let(:raw_data) { SpecData.
|
115
|
+
let(:raw_data) { SpecData.get_json "game_duel.json" }
|
116
116
|
|
117
117
|
it { is_expected.to be_a TriviaCrack::Game }
|
118
118
|
its(:id) { is_expected.to be 1119 }
|
@@ -10,7 +10,7 @@ describe TriviaCrack::Parsers::GameStatisticsParser do
|
|
10
10
|
before { statistics_data["crowns"] = raw_data["player_one"]["crowns"] }
|
11
11
|
|
12
12
|
context 'when given data from the games API' do
|
13
|
-
let(:raw_data) { SpecData.
|
13
|
+
let(:raw_data) { SpecData.get_json "game.json" }
|
14
14
|
|
15
15
|
it { is_expected.to be_a TriviaCrack::GameStatistics }
|
16
16
|
its(:correct_answers) { is_expected.to be 12 }
|
@@ -21,7 +21,7 @@ describe TriviaCrack::Parsers::GameStatisticsParser do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
context 'when given data from the dashboard API' do
|
24
|
-
let(:raw_data) { SpecData.
|
24
|
+
let(:raw_data) { SpecData.get_json("dashboard.json")["list"][3] }
|
25
25
|
|
26
26
|
it { is_expected.to be_a TriviaCrack::GameStatistics }
|
27
27
|
its(:correct_answers) { is_expected.to be 13 }
|
@@ -32,7 +32,7 @@ describe TriviaCrack::Parsers::GameStatisticsParser do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
context 'when given data from the answer API' do
|
35
|
-
let(:raw_data) { SpecData.
|
35
|
+
let(:raw_data) { SpecData.get_json "answer.json" }
|
36
36
|
|
37
37
|
it { is_expected.to be_a TriviaCrack::GameStatistics }
|
38
38
|
its(:correct_answers) { is_expected.to be 13 }
|
@@ -43,7 +43,7 @@ describe TriviaCrack::Parsers::GameStatisticsParser do
|
|
43
43
|
end
|
44
44
|
|
45
45
|
context 'when given data from the new game API' do
|
46
|
-
let(:raw_data) { SpecData.
|
46
|
+
let(:raw_data) { SpecData.get_json "new_game.json" }
|
47
47
|
|
48
48
|
it { is_expected.to be_a TriviaCrack::GameStatistics }
|
49
49
|
its(:correct_answers) { is_expected.to be 0 }
|
@@ -7,7 +7,7 @@ describe TriviaCrack::Parsers::ProfileParser do
|
|
7
7
|
subject { TriviaCrack::Parsers::ProfileParser.parse raw_data }
|
8
8
|
|
9
9
|
context 'when given data from the profile API' do
|
10
|
-
let(:raw_data) { SpecData.
|
10
|
+
let(:raw_data) { SpecData.get_json "profile.json" }
|
11
11
|
|
12
12
|
it { is_expected.to be_a TriviaCrack::Profile }
|
13
13
|
its(:id) { is_expected.to be 111 }
|
@@ -32,7 +32,7 @@ describe TriviaCrack::Parsers::ProfileParser do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
context 'when given data from the current user profile API' do
|
35
|
-
let(:raw_data) { SpecData.
|
35
|
+
let(:raw_data) { SpecData.get_json "my_profile.json" }
|
36
36
|
|
37
37
|
it { is_expected.to be_a TriviaCrack::Profile }
|
38
38
|
its(:id) { is_expected.to be 222 }
|
@@ -7,7 +7,7 @@ describe TriviaCrack::Parsers::QuestionParser do
|
|
7
7
|
subject { TriviaCrack::Parsers::QuestionParser.parse raw_data }
|
8
8
|
|
9
9
|
context 'when given data without an image' do
|
10
|
-
let(:raw_data) { SpecData.
|
10
|
+
let(:raw_data) { SpecData.get_json "question.json" }
|
11
11
|
|
12
12
|
it { is_expected.to be_a TriviaCrack::Question }
|
13
13
|
its(:type) { is_expected.to be :normal }
|
@@ -19,7 +19,7 @@ describe TriviaCrack::Parsers::QuestionParser do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
context 'when given data with an image' do
|
22
|
-
let(:raw_data) { SpecData.
|
22
|
+
let(:raw_data) { SpecData.get_json "question_image.json" }
|
23
23
|
|
24
24
|
it { is_expected.to be_a TriviaCrack::Question }
|
25
25
|
its(:type) { is_expected.to be :normal }
|
@@ -7,7 +7,7 @@ describe TriviaCrack::Parsers::SessionParser do
|
|
7
7
|
subject { TriviaCrack::Parsers::SessionParser.parse raw_data }
|
8
8
|
|
9
9
|
context 'when given data from the login API' do
|
10
|
-
let(:raw_data) { SpecData.
|
10
|
+
let(:raw_data) { SpecData.get_json "login.json" }
|
11
11
|
|
12
12
|
it { is_expected.to be_a TriviaCrack::Session }
|
13
13
|
its(:user_id) { is_expected.to be 111 }
|
@@ -7,7 +7,7 @@ describe TriviaCrack::Parsers::UserParser do
|
|
7
7
|
subject { TriviaCrack::Parsers::UserParser.parse raw_data }
|
8
8
|
|
9
9
|
context 'when given data from the user API' do
|
10
|
-
let(:raw_data) { SpecData.
|
10
|
+
let(:raw_data) { SpecData.get_json "user.json" }
|
11
11
|
|
12
12
|
it { is_expected.to be_a TriviaCrack::User }
|
13
13
|
its(:id) { is_expected.to be 111 }
|
@@ -28,7 +28,7 @@ describe TriviaCrack::Parsers::UserParser do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
context 'when given opponent data from the game API' do
|
31
|
-
let(:raw_data) { SpecData.
|
31
|
+
let(:raw_data) { SpecData.get_json("game.json")["opponent"] }
|
32
32
|
|
33
33
|
it { is_expected.to be_a TriviaCrack::User }
|
34
34
|
its(:id) { is_expected.to be 111 }
|
data/spec/spec_helper.rb
CHANGED
@@ -33,6 +33,10 @@ require_relative "../lib/triviacrack/parsers/user_parser"
|
|
33
33
|
class SpecData
|
34
34
|
|
35
35
|
def self.get(filename)
|
36
|
+
File.read(File.expand_path("../data/#{filename}", __FILE__))
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.get_json(filename)
|
36
40
|
file = File.read(File.expand_path("../data/#{filename}", __FILE__))
|
37
41
|
JSON.parse(file)
|
38
42
|
end
|
data/triviacrack.gemspec
CHANGED
@@ -25,8 +25,8 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency "rake", "~> 13.0.6"
|
26
26
|
spec.add_development_dependency "rspec", "~> 3.10.0"
|
27
27
|
spec.add_development_dependency "rspec-its", "~> 1.3.0"
|
28
|
-
spec.add_development_dependency "json", "~> 2.5.1"
|
29
28
|
spec.add_development_dependency "fuubar", "~> 2.5.1"
|
30
29
|
|
30
|
+
spec.add_dependency "json", "~> 2.5.1"
|
31
31
|
spec.add_dependency "faraday", "~> 1.7.2"
|
32
32
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: triviacrack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Kus
|
@@ -81,7 +81,7 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 1.3.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: fuubar
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
@@ -95,13 +95,13 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 2.5.1
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: json
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: 2.5.1
|
104
|
-
type: :
|
104
|
+
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|