triviacrack 0.6.0 → 0.7.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/.github/workflows/ci.yml +7 -2
- data/.github/workflows/publish.yml +8 -3
- data/.rubocop.yml +23 -0
- data/.ruby-version +1 -1
- data/Gemfile +1 -2
- data/Gemfile.lock +31 -10
- data/Rakefile +4 -2
- data/lib/triviacrack/api/client.rb +7 -7
- data/lib/triviacrack/api/common.rb +10 -11
- data/lib/triviacrack/api/game.rb +11 -13
- data/lib/triviacrack/api/login.rb +7 -8
- data/lib/triviacrack/api/profile.rb +4 -4
- data/lib/triviacrack/api/question.rb +14 -15
- data/lib/triviacrack/api/user.rb +9 -11
- data/lib/triviacrack/category_statistics.rb +2 -2
- data/lib/triviacrack/errors/parse_error.rb +2 -0
- data/lib/triviacrack/errors/request_error.rb +5 -3
- data/lib/triviacrack/game.rb +3 -3
- data/lib/triviacrack/game_statistics.rb +3 -3
- data/lib/triviacrack/parsers/category_statistics_parser.rb +13 -15
- data/lib/triviacrack/parsers/game_parser.rb +39 -39
- data/lib/triviacrack/parsers/game_statistics_parser.rb +15 -15
- data/lib/triviacrack/parsers/profile_parser.rb +28 -28
- data/lib/triviacrack/parsers/question_parser.rb +11 -11
- data/lib/triviacrack/parsers/session_parser.rb +10 -10
- data/lib/triviacrack/parsers/time_parser.rb +4 -4
- data/lib/triviacrack/parsers/user_parser.rb +21 -21
- data/lib/triviacrack/profile.rb +3 -3
- data/lib/triviacrack/question.rb +3 -3
- data/lib/triviacrack/session.rb +2 -2
- data/lib/triviacrack/user.rb +3 -3
- data/lib/triviacrack/version.rb +3 -1
- data/lib/triviacrack.rb +12 -10
- data/spec/api/game_spec.rb +49 -29
- data/spec/api/login_spec.rb +22 -15
- data/spec/api/profile_spec.rb +34 -20
- data/spec/api/question_spec.rb +49 -30
- data/spec/api/user_spec.rb +31 -20
- data/spec/game_spec.rb +4 -4
- data/spec/parsers/category_statistics_parser_spec.rb +8 -8
- data/spec/parsers/game_parser_spec.rb +21 -19
- data/spec/parsers/game_statistics_parser_spec.rb +11 -11
- data/spec/parsers/profile_parser_spec.rb +10 -10
- data/spec/parsers/question_parser_spec.rb +15 -11
- data/spec/parsers/session_parser_spec.rb +8 -8
- data/spec/parsers/time_parser_spec.rb +5 -5
- data/spec/parsers/user_parser_spec.rb +11 -11
- data/spec/spec_helper.rb +30 -32
- data/spec/user_spec.rb +4 -4
- data/triviacrack.gemspec +21 -20
- metadata +32 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1655be2ef856891d2287a9c944212121c44c42dddc89a67d8f447c2bd7f7651d
|
4
|
+
data.tar.gz: 24495ecb87e3ab8f32938d5d60aadccb20f94836fee016548f18450f205f76ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35aaf68a6492fdaa6859cac4c79d0be62b38bd99e5b537a953581a206777b0c791dc22417e74c06df6a34f7eb9f35d4ef8d6bc88f4de7f1e5e3711dba5d4da77
|
7
|
+
data.tar.gz: 3ff4f392bc6d16b7f8f2113e791893859ec61f26ba11944b3129898f288cacbc4a06019efe8a8b3a1d144cc8c0583029ad66c3277493bd9fefc18645d4548b14
|
data/.github/workflows/ci.yml
CHANGED
@@ -15,15 +15,20 @@ jobs:
|
|
15
15
|
steps:
|
16
16
|
- uses: actions/checkout@v1
|
17
17
|
|
18
|
-
- uses:
|
18
|
+
- uses: ruby/setup-ruby@v1
|
19
19
|
with:
|
20
|
-
ruby-version: 3.
|
20
|
+
ruby-version: 3.1.2
|
21
21
|
|
22
22
|
- name: Bundle Install
|
23
23
|
run: |
|
24
24
|
gem install bundler
|
25
25
|
bundle install --jobs 4 --retry 3
|
26
26
|
|
27
|
+
- name: RuboCop Linter Action
|
28
|
+
uses: andrewmcodes/rubocop-linter-action@v3.3.0
|
29
|
+
env:
|
30
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
31
|
+
|
27
32
|
- name: Run RSpec and Code Coverage
|
28
33
|
uses: paambaati/codeclimate-action@v2.4.0
|
29
34
|
env:
|
@@ -3,7 +3,7 @@ name: Publish
|
|
3
3
|
on:
|
4
4
|
push:
|
5
5
|
tags:
|
6
|
-
-
|
6
|
+
- "v*"
|
7
7
|
|
8
8
|
jobs:
|
9
9
|
build:
|
@@ -12,15 +12,20 @@ jobs:
|
|
12
12
|
steps:
|
13
13
|
- uses: actions/checkout@v1
|
14
14
|
|
15
|
-
- uses:
|
15
|
+
- uses: ruby/setup-ruby@v1
|
16
16
|
with:
|
17
|
-
ruby-version: 3.
|
17
|
+
ruby-version: 3.1.2
|
18
18
|
|
19
19
|
- name: Bundle Install
|
20
20
|
run: |
|
21
21
|
gem install bundler
|
22
22
|
bundle install --jobs 4 --retry 3
|
23
23
|
|
24
|
+
- name: RuboCop Linter Action
|
25
|
+
uses: andrewmcodes/rubocop-linter-action@v3.3.0
|
26
|
+
env:
|
27
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
28
|
+
|
24
29
|
- name: Run RSpec and Code Coverage
|
25
30
|
uses: paambaati/codeclimate-action@v2.4.0
|
26
31
|
env:
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# The behavior of RuboCop can be controlled via the .rubocop.yml
|
2
|
+
# configuration file. It makes it possible to enable/disable
|
3
|
+
# certain cops (checks) and to alter their behavior if they accept
|
4
|
+
# any parameters. The file can be placed either in your home
|
5
|
+
# directory or in some project directory.
|
6
|
+
#
|
7
|
+
# RuboCop will start looking for the configuration file in the directory
|
8
|
+
# where the inspected file is and continue its way up to the root directory.
|
9
|
+
#
|
10
|
+
# See https://docs.rubocop.org/rubocop/configuration
|
11
|
+
|
12
|
+
AllCops:
|
13
|
+
TargetRubyVersion: 2.5
|
14
|
+
NewCops: enable
|
15
|
+
|
16
|
+
Metrics/BlockLength:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
Style/Documentation:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
Gemspec/RequireMFA:
|
23
|
+
Enabled: false
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.1.2
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
triviacrack (0.
|
4
|
+
triviacrack (0.7.0)
|
5
5
|
faraday (~> 1.7.2)
|
6
6
|
json (~> 2.5.1)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
|
11
|
+
ast (2.4.2)
|
12
|
+
diff-lcs (1.5.0)
|
12
13
|
docile (1.4.0)
|
13
14
|
faraday (1.7.2)
|
14
15
|
faraday-em_http (~> 1.0)
|
@@ -33,24 +34,42 @@ GEM
|
|
33
34
|
rspec-core (~> 3.0)
|
34
35
|
ruby-progressbar (~> 1.4)
|
35
36
|
json (2.5.1)
|
36
|
-
multipart-post (2.
|
37
|
+
multipart-post (2.2.3)
|
38
|
+
parallel (1.22.1)
|
39
|
+
parser (3.1.2.0)
|
40
|
+
ast (~> 2.4.1)
|
41
|
+
rainbow (3.1.1)
|
37
42
|
rake (13.0.6)
|
43
|
+
regexp_parser (2.5.0)
|
44
|
+
rexml (3.2.5)
|
38
45
|
rspec (3.10.0)
|
39
46
|
rspec-core (~> 3.10.0)
|
40
47
|
rspec-expectations (~> 3.10.0)
|
41
48
|
rspec-mocks (~> 3.10.0)
|
42
|
-
rspec-core (3.10.
|
49
|
+
rspec-core (3.10.2)
|
43
50
|
rspec-support (~> 3.10.0)
|
44
|
-
rspec-expectations (3.10.
|
51
|
+
rspec-expectations (3.10.2)
|
45
52
|
diff-lcs (>= 1.2.0, < 2.0)
|
46
53
|
rspec-support (~> 3.10.0)
|
47
54
|
rspec-its (1.3.0)
|
48
55
|
rspec-core (>= 3.0.0)
|
49
56
|
rspec-expectations (>= 3.0.0)
|
50
|
-
rspec-mocks (3.10.
|
57
|
+
rspec-mocks (3.10.3)
|
51
58
|
diff-lcs (>= 1.2.0, < 2.0)
|
52
59
|
rspec-support (~> 3.10.0)
|
53
|
-
rspec-support (3.10.
|
60
|
+
rspec-support (3.10.3)
|
61
|
+
rubocop (1.31.2)
|
62
|
+
json (~> 2.3)
|
63
|
+
parallel (~> 1.10)
|
64
|
+
parser (>= 3.1.0.0)
|
65
|
+
rainbow (>= 2.2.2, < 4.0)
|
66
|
+
regexp_parser (>= 1.8, < 3.0)
|
67
|
+
rexml (>= 3.2.5, < 4.0)
|
68
|
+
rubocop-ast (>= 1.18.0, < 2.0)
|
69
|
+
ruby-progressbar (~> 1.7)
|
70
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
71
|
+
rubocop-ast (1.19.1)
|
72
|
+
parser (>= 3.1.1.0)
|
54
73
|
ruby-progressbar (1.11.0)
|
55
74
|
ruby2_keywords (0.0.5)
|
56
75
|
simplecov (0.21.2)
|
@@ -58,19 +77,21 @@ GEM
|
|
58
77
|
simplecov-html (~> 0.11)
|
59
78
|
simplecov_json_formatter (~> 0.1)
|
60
79
|
simplecov-html (0.12.3)
|
61
|
-
simplecov_json_formatter (0.1.
|
80
|
+
simplecov_json_formatter (0.1.4)
|
81
|
+
unicode-display_width (2.2.0)
|
62
82
|
|
63
83
|
PLATFORMS
|
64
84
|
ruby
|
65
85
|
|
66
86
|
DEPENDENCIES
|
67
|
-
bundler (~> 2.
|
87
|
+
bundler (~> 2.3.18)
|
68
88
|
fuubar (~> 2.5.1)
|
69
89
|
rake (~> 13.0.6)
|
70
90
|
rspec (~> 3.10.0)
|
71
91
|
rspec-its (~> 1.3.0)
|
92
|
+
rubocop (~> 1.31.2)
|
72
93
|
simplecov (~> 0.21.2)
|
73
94
|
triviacrack!
|
74
95
|
|
75
96
|
BUNDLED WITH
|
76
|
-
2.
|
97
|
+
2.3.18
|
data/Rakefile
CHANGED
@@ -1,14 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'triviacrack/api/game'
|
4
|
+
require 'triviacrack/api/login'
|
5
|
+
require 'triviacrack/api/profile'
|
6
|
+
require 'triviacrack/api/question'
|
7
|
+
require 'triviacrack/api/user'
|
6
8
|
|
7
9
|
# Public: Interface for interacting with the Trivia Crack API.
|
8
10
|
module TriviaCrack
|
9
11
|
module API
|
10
12
|
class Client
|
11
|
-
|
12
13
|
include TriviaCrack::API::Game
|
13
14
|
include TriviaCrack::API::Login
|
14
15
|
include TriviaCrack::API::User
|
@@ -25,7 +26,6 @@ module TriviaCrack
|
|
25
26
|
@session = TriviaCrack::Session.new session_id: session_id,
|
26
27
|
user_id: user_id
|
27
28
|
end
|
28
|
-
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -1,13 +1,14 @@
|
|
1
|
-
|
2
|
-
require "faraday"
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
|
-
require
|
3
|
+
require 'json'
|
4
|
+
require 'faraday'
|
5
|
+
|
6
|
+
require 'triviacrack/errors/request_error'
|
5
7
|
|
6
8
|
# Internal: Common methods used for the Trivia Crack API.
|
7
9
|
module TriviaCrack
|
8
10
|
module API
|
9
11
|
module Common
|
10
|
-
|
11
12
|
# Internal: Makes a GET request to the Trivia Crack API using the set of
|
12
13
|
# default headers.
|
13
14
|
#
|
@@ -39,18 +40,16 @@ module TriviaCrack
|
|
39
40
|
private
|
40
41
|
|
41
42
|
# Internal: The host name of the Trivia Crack API.
|
42
|
-
API_HOST =
|
43
|
+
API_HOST = 'https://api.preguntados.com'
|
43
44
|
|
44
45
|
# Internal: Constructs the set of headers needed to make requests to the
|
45
46
|
# Trivia Crack API.
|
46
47
|
#
|
47
48
|
# Returns a hash of headers.
|
48
49
|
def default_headers
|
49
|
-
headers = {
|
50
|
+
headers = { 'Content-Type': 'application/json; charset=utf-8' }
|
50
51
|
|
51
|
-
if @session
|
52
|
-
headers["Cookie"] = "ap_session=#{@session.session_id}"
|
53
|
-
end
|
52
|
+
headers['Cookie'] = "ap_session=#{@session.session_id}" if @session
|
54
53
|
|
55
54
|
headers
|
56
55
|
end
|
@@ -63,9 +62,9 @@ module TriviaCrack
|
|
63
62
|
# Returns the response body parsed from JSON
|
64
63
|
# Raises TriviaCrack:Errors::RequestError if the request failed.
|
65
64
|
def check_response(url, response)
|
66
|
-
|
65
|
+
unless response.status.between? 200, 299
|
67
66
|
raise TriviaCrack::Errors::RequestError.new(response.status, url, response.body),
|
68
|
-
|
67
|
+
"Request to #{API_HOST}#{url} failed with code #{response.status}."
|
69
68
|
end
|
70
69
|
|
71
70
|
JSON.parse(response.body)
|
data/lib/triviacrack/api/game.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
require 'triviacrack/api/common'
|
5
|
+
require 'triviacrack/parsers/game_parser'
|
4
6
|
|
5
7
|
# Public: All methods in this module make requests to the Trivia Crack games
|
6
8
|
# API.
|
7
9
|
module TriviaCrack
|
8
10
|
module API
|
9
11
|
module Game
|
10
|
-
|
11
12
|
include TriviaCrack::API::Common
|
12
13
|
|
13
14
|
# Public: Uses the Trivia Crack API to fetch the list of games for the
|
@@ -19,17 +20,15 @@ module TriviaCrack
|
|
19
20
|
#
|
20
21
|
# Returns a list of TriviaCrack::Game.
|
21
22
|
# Raises TriviaCrack:Errors::RequestError if the request fails.
|
22
|
-
def get_games
|
23
|
+
def get_games # rubocop:disable Naming/AccessorMethodName
|
23
24
|
response = get "/api/users/#{@session.user_id}/dashboard"
|
24
25
|
|
25
|
-
games_data = response[
|
26
|
+
games_data = response['list']
|
26
27
|
|
27
28
|
games = []
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
games << game
|
32
|
-
end
|
29
|
+
games_data&.each do |game_data|
|
30
|
+
game = TriviaCrack::Parsers::GameParser.parse game_data
|
31
|
+
games << game
|
33
32
|
end
|
34
33
|
|
35
34
|
games
|
@@ -63,11 +62,10 @@ module TriviaCrack
|
|
63
62
|
# Raises TriviaCrack::Errors::RequestError if the request fails
|
64
63
|
def start_new_game
|
65
64
|
response = post "/api/users/#{@session.user_id}/games",
|
66
|
-
parameters: { language:
|
65
|
+
parameters: { language: 'EN' }.to_json
|
67
66
|
|
68
67
|
TriviaCrack::Parsers::GameParser.parse response
|
69
68
|
end
|
70
|
-
|
71
69
|
end
|
72
70
|
end
|
73
71
|
end
|
@@ -1,13 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
require 'triviacrack/api/common'
|
5
|
+
require 'triviacrack/parsers/session_parser'
|
4
6
|
|
5
7
|
# Public: All methods in this module make requests to the Trivia Crack login
|
6
8
|
# API.
|
7
9
|
module TriviaCrack
|
8
10
|
module API
|
9
11
|
module Login
|
10
|
-
|
11
12
|
include TriviaCrack::API::Common
|
12
13
|
|
13
14
|
# Public: Uses the given email and password to log in to Trivia Crack
|
@@ -23,14 +24,12 @@ module TriviaCrack
|
|
23
24
|
# Returns the user_id and username of the user that has logged in.
|
24
25
|
# Raises TriviaCrack::Errors::RequestError if the request fails.
|
25
26
|
def login(email, password)
|
26
|
-
response = post
|
27
|
+
response = post '/api/login', parameters: { email: email,
|
27
28
|
password: password,
|
28
|
-
language:
|
29
|
-
}.to_json
|
29
|
+
language: 'en' }.to_json
|
30
30
|
|
31
31
|
@session = TriviaCrack::Parsers::SessionParser.parse response
|
32
32
|
end
|
33
|
-
|
34
33
|
end
|
35
34
|
end
|
36
35
|
end
|
@@ -1,10 +1,11 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'triviacrack/api/common'
|
2
4
|
|
3
5
|
# Public: Interface to the Trivia Crack Profile API.
|
4
6
|
module TriviaCrack
|
5
7
|
module API
|
6
8
|
module Profile
|
7
|
-
|
8
9
|
include TriviaCrack::API::Common
|
9
10
|
|
10
11
|
# Public: Uses the Trivia Crack API to get the profile of the user with
|
@@ -32,13 +33,12 @@ module TriviaCrack
|
|
32
33
|
#
|
33
34
|
# Returns the TriviaCrack::Profile for the current user.
|
34
35
|
# Raises TriviaCrack::Errors::RequestError if the request fails.
|
35
|
-
def get_my_profile
|
36
|
+
def get_my_profile # rubocop:disable Naming/AccessorMethodName
|
36
37
|
response =
|
37
38
|
get "/api/users/#{@session.user_id}/profiles/#{@session.user_id}"
|
38
39
|
|
39
40
|
TriviaCrack::Parsers::ProfileParser.parse response
|
40
41
|
end
|
41
|
-
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
@@ -1,13 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
require 'triviacrack/api/common'
|
5
|
+
require 'triviacrack/parsers/game_parser'
|
4
6
|
|
5
7
|
# Public: All methods in this module make requests to the Trivia Crack answers
|
6
8
|
# API.
|
7
9
|
module TriviaCrack
|
8
10
|
module API
|
9
11
|
module Question
|
10
|
-
|
11
12
|
include TriviaCrack::API::Common
|
12
13
|
|
13
14
|
# Public: Uses the Trivia Crack API to answer the given question.
|
@@ -26,13 +27,12 @@ module TriviaCrack
|
|
26
27
|
def answer_question(game_id, question, answer)
|
27
28
|
response =
|
28
29
|
post "/api/users/#{@session.user_id}/games/#{game_id}/answers",
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
}.to_json
|
30
|
+
parameters: { type: question.type.upcase,
|
31
|
+
answers: [{
|
32
|
+
id: question.id,
|
33
|
+
answer: answer,
|
34
|
+
category: question.category.upcase
|
35
|
+
}] }.to_json
|
36
36
|
|
37
37
|
game = TriviaCrack::Parsers::GameParser.parse response
|
38
38
|
|
@@ -57,11 +57,11 @@ module TriviaCrack
|
|
57
57
|
# with an entry for each question ID and a boolean indicating if
|
58
58
|
# the question was answered successfully.
|
59
59
|
# Raises TriviaCrack::Errors::RequestError if the request fails
|
60
|
-
def answer_questions(game_id, questions, answer_map)
|
60
|
+
def answer_questions(game_id, questions, answer_map) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
61
61
|
answers = []
|
62
62
|
correct_answers = {}
|
63
63
|
|
64
|
-
|
64
|
+
questions.each do |question|
|
65
65
|
answer = {
|
66
66
|
id: question.id,
|
67
67
|
answer: answer_map[question.id],
|
@@ -73,13 +73,12 @@ module TriviaCrack
|
|
73
73
|
|
74
74
|
response =
|
75
75
|
post "/api/users/#{@session.user_id}/games/#{game_id}/answers",
|
76
|
-
|
76
|
+
parameters: { type: questions.first.type.upcase, answers: answers }.to_json
|
77
77
|
|
78
78
|
game = TriviaCrack::Parsers::GameParser.parse response
|
79
79
|
|
80
80
|
[game, correct_answers]
|
81
81
|
end
|
82
|
-
|
83
82
|
end
|
84
83
|
end
|
85
84
|
end
|
data/lib/triviacrack/api/user.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'triviacrack/api/common'
|
4
|
+
require 'triviacrack/parsers/user_parser'
|
3
5
|
|
4
6
|
# Public: All methods in this module make requests to the Trivia Crack users
|
5
7
|
# API.
|
6
8
|
module TriviaCrack
|
7
9
|
module API
|
8
10
|
module User
|
9
|
-
|
10
11
|
include TriviaCrack::API::Common
|
11
12
|
|
12
13
|
# Public: Uses the Trivia Crack Search API to find the numeric user id of
|
@@ -22,16 +23,14 @@ module TriviaCrack
|
|
22
23
|
# Raises TriviaCrack:Errors::RequestError if the request fails.
|
23
24
|
def get_user_id(username)
|
24
25
|
# Trim the @ character from the start of the username
|
25
|
-
if username.start_with?
|
26
|
-
username = username[1..-1]
|
27
|
-
end
|
26
|
+
username = username[1..-1] if username.start_with? '@'
|
28
27
|
|
29
28
|
body = get "/api/search?username=#{username}"
|
30
29
|
|
31
30
|
user_id = false
|
32
|
-
body[
|
33
|
-
if user[
|
34
|
-
user_id = user[
|
31
|
+
body['list'].each do |user|
|
32
|
+
if user['username'] == username
|
33
|
+
user_id = user['id']
|
35
34
|
break
|
36
35
|
end
|
37
36
|
end
|
@@ -43,12 +42,11 @@ module TriviaCrack
|
|
43
42
|
#
|
44
43
|
# Returns a TriviaCrack::User representing the current user.
|
45
44
|
# Raises TriviaCrack::Errors::RequestError if the request fails
|
46
|
-
def get_user
|
45
|
+
def get_user # rubocop:disable Naming/AccessorMethodName
|
47
46
|
response = get "/api/users/#{@session.user_id}"
|
48
47
|
|
49
48
|
TriviaCrack::Parsers::UserParser.parse response
|
50
49
|
end
|
51
|
-
|
52
50
|
end
|
53
51
|
end
|
54
52
|
end
|
@@ -1,8 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Public: An object representing category statistics for a player within a
|
2
4
|
# single Trivia Crack game.
|
3
5
|
module TriviaCrack
|
4
6
|
class CategoryStatistics
|
5
|
-
|
6
7
|
# Public: The category for these statistics (:arts, :geography, etc).
|
7
8
|
attr_reader :category
|
8
9
|
|
@@ -22,6 +23,5 @@ module TriviaCrack
|
|
22
23
|
@incorrect = incorrect
|
23
24
|
@worst = worst
|
24
25
|
end
|
25
|
-
|
26
26
|
end
|
27
27
|
end
|
@@ -1,16 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Public: This error is raised when a web request to the Trivia Crack API is
|
2
4
|
# unsuccessful.
|
3
5
|
module TriviaCrack
|
4
6
|
module Errors
|
5
7
|
class RequestError < StandardError
|
6
|
-
|
7
8
|
# Public: The HTTP status code returned by the Trivia Crack server.
|
8
9
|
attr_reader :code
|
9
10
|
|
10
|
-
#Public: The URL that was requested.
|
11
|
+
# Public: The URL that was requested.
|
11
12
|
attr_reader :url
|
12
13
|
|
13
|
-
#Public: The response body that was returned by the Trivia Crack server.
|
14
|
+
# Public: The response body that was returned by the Trivia Crack server.
|
14
15
|
attr_reader :body
|
15
16
|
|
16
17
|
# Public: Initializes a RequestError.
|
@@ -19,6 +20,7 @@ module TriviaCrack
|
|
19
20
|
# url - The URL that was requested.
|
20
21
|
# body - The response body that was returned by the Trivia Crack server.
|
21
22
|
def initialize(code, url, body)
|
23
|
+
super()
|
22
24
|
@code = code
|
23
25
|
@url = url
|
24
26
|
@body = body
|
data/lib/triviacrack/game.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Public: An object representing a Trivia Crack Game, including information
|
2
4
|
# about the questions to be asked in the game, the state of the game, opponent
|
3
5
|
# information, and more.
|
4
6
|
module TriviaCrack
|
5
7
|
class Game
|
6
|
-
|
7
8
|
# Public: The unique identifier of the game.
|
8
9
|
attr_reader :id
|
9
10
|
|
@@ -58,7 +59,7 @@ module TriviaCrack
|
|
58
59
|
# Public: TriviaCrack::GameStatistics for the opponent.
|
59
60
|
attr_reader :opponent_statistics
|
60
61
|
|
61
|
-
def initialize(id:, opponent: nil, game_status: nil, language: nil,
|
62
|
+
def initialize(id:, opponent: nil, game_status: nil, language: nil, # rubocop:disable Metrics/MethodLength, Metrics/ParameterLists
|
62
63
|
created: nil, last_turn: nil, type: nil,
|
63
64
|
expiration_date: nil, my_turn: nil, round_number: nil,
|
64
65
|
is_random: nil, unread_messages: nil, status_version: nil,
|
@@ -95,6 +96,5 @@ module TriviaCrack
|
|
95
96
|
def playable?
|
96
97
|
@my_turn && @game_status != :ended
|
97
98
|
end
|
98
|
-
|
99
99
|
end
|
100
100
|
end
|
@@ -1,7 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Public: An object representing player statistics for a Trivia Crack game.
|
2
4
|
module TriviaCrack
|
3
5
|
class GameStatistics
|
4
|
-
|
5
6
|
# Public: The number of questions answered correctly.
|
6
7
|
attr_reader :correct_answers
|
7
8
|
|
@@ -20,7 +21,7 @@ module TriviaCrack
|
|
20
21
|
# Public: A hash of category statistics.
|
21
22
|
attr_reader :categories
|
22
23
|
|
23
|
-
def initialize(correct_answers: nil, incorrect_answers: nil,
|
24
|
+
def initialize(correct_answers: nil, incorrect_answers: nil, # rubocop:disable Metrics/ParameterLists
|
24
25
|
questions_answered: nil, challenges_won: nil,
|
25
26
|
crowns: nil, categories: nil)
|
26
27
|
@correct_answers = correct_answers
|
@@ -30,6 +31,5 @@ module TriviaCrack
|
|
30
31
|
@crowns = crowns
|
31
32
|
@categories = categories
|
32
33
|
end
|
33
|
-
|
34
34
|
end
|
35
35
|
end
|