triviacrack 0.3.2 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1fb67144378010ccdb7d4f1c3827dcc632edf3947de9303428778ddd906196f0
4
- data.tar.gz: e25ada0b08a6a906e992e449b6d269ccd04253deb77a573b1d907c26ffd4506c
3
+ metadata.gz: bac625736e1fdbe91e229596d95e3af90c22ea6b7b2de6373717994301bfe3b9
4
+ data.tar.gz: 37afe95e8d8aa72297e85236c00af489bc6a8502c9f8b3d079062ed7157fec02
5
5
  SHA512:
6
- metadata.gz: 662f27c81247ce6b788e03727585cfb8af826e54afd93b17f38b813a684029935a2e5b276ab0b30bf8040bf9701400a843a00a6ef57bd991f1849cf9693efabb
7
- data.tar.gz: e687e13f2c5c1f03859de4e48c484f24bbb708520f3b1f76128531635298337f36ea3fe1ddd77c9aff4165b10e74b3fa51f9a45e2959db3d1fff8b1c6a9bdb97
6
+ metadata.gz: d5f407ab7c8f5ca194efe7bdea42f90943b5f41c80fc5e2485f8d891afc076bbca76a0b016b75c9da96d598e436371ee8db7763b3771fd21942052e76825ba0e
7
+ data.tar.gz: 28d4d34fb76d0fdaaa9c81b00fdf53bc7422406e701cf343275b0a81aebe0faabdb516dcdd1186309fba94bedfe33328111a70e03842c6f5acd17ea5af400fb9
@@ -17,7 +17,7 @@ jobs:
17
17
 
18
18
  - uses: actions/setup-ruby@v1
19
19
  with:
20
- ruby-version: 2.6.5
20
+ ruby-version: 3.0.2
21
21
 
22
22
  - name: Bundle Install
23
23
  run: |
@@ -14,7 +14,7 @@ jobs:
14
14
 
15
15
  - uses: actions/setup-ruby@v1
16
16
  with:
17
- ruby-version: 2.6.5
17
+ ruby-version: 3.0.2
18
18
 
19
19
  - name: Bundle Install
20
20
  run: |
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.0.2
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- #ruby=ruby-2.6.5
1
+ #ruby=ruby-3.0.2
2
2
  #ruby-gemset=triviacrack
3
3
 
4
4
  source 'https://rubygems.org'
data/Gemfile.lock CHANGED
@@ -1,78 +1,76 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- triviacrack (0.3.2)
5
- unirest-2x (~> 1.1.3)
4
+ triviacrack (0.6.0)
5
+ faraday (~> 1.7.2)
6
+ json (~> 2.5.1)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
9
10
  specs:
10
- addressable (2.7.0)
11
- public_suffix (>= 2.0.2, < 5.0)
12
- diff-lcs (1.3)
13
- docile (1.3.2)
14
- domain_name (0.5.20190701)
15
- unf (>= 0.0.5, < 1.0.0)
16
- fuubar (2.5.0)
11
+ diff-lcs (1.4.4)
12
+ docile (1.4.0)
13
+ faraday (1.7.2)
14
+ faraday-em_http (~> 1.0)
15
+ faraday-em_synchrony (~> 1.0)
16
+ faraday-excon (~> 1.1)
17
+ faraday-httpclient (~> 1.0.1)
18
+ faraday-net_http (~> 1.0)
19
+ faraday-net_http_persistent (~> 1.1)
20
+ faraday-patron (~> 1.0)
21
+ faraday-rack (~> 1.0)
22
+ multipart-post (>= 1.2, < 3)
23
+ ruby2_keywords (>= 0.0.4)
24
+ faraday-em_http (1.0.0)
25
+ faraday-em_synchrony (1.0.0)
26
+ faraday-excon (1.1.0)
27
+ faraday-httpclient (1.0.1)
28
+ faraday-net_http (1.0.1)
29
+ faraday-net_http_persistent (1.2.0)
30
+ faraday-patron (1.0.0)
31
+ faraday-rack (1.0.0)
32
+ fuubar (2.5.1)
17
33
  rspec-core (~> 3.0)
18
34
  ruby-progressbar (~> 1.4)
19
- http-accept (1.7.0)
20
- http-cookie (1.0.3)
21
- domain_name (~> 0.5)
22
- json (2.3.0)
23
- mime-types (3.3.1)
24
- mime-types-data (~> 3.2015)
25
- mime-types-data (3.2019.1009)
26
- netrc (0.11.0)
27
- public_suffix (4.0.3)
28
- rake (13.0.1)
29
- rest-client (2.1.0)
30
- http-accept (>= 1.7.0, < 2.0)
31
- http-cookie (>= 1.0.2, < 2.0)
32
- mime-types (>= 1.16, < 4.0)
33
- netrc (~> 0.8)
34
- rspec (3.9.0)
35
- rspec-core (~> 3.9.0)
36
- rspec-expectations (~> 3.9.0)
37
- rspec-mocks (~> 3.9.0)
38
- rspec-core (3.9.1)
39
- rspec-support (~> 3.9.1)
40
- rspec-expectations (3.9.0)
35
+ json (2.5.1)
36
+ multipart-post (2.1.1)
37
+ rake (13.0.6)
38
+ rspec (3.10.0)
39
+ rspec-core (~> 3.10.0)
40
+ rspec-expectations (~> 3.10.0)
41
+ rspec-mocks (~> 3.10.0)
42
+ rspec-core (3.10.1)
43
+ rspec-support (~> 3.10.0)
44
+ rspec-expectations (3.10.1)
41
45
  diff-lcs (>= 1.2.0, < 2.0)
42
- rspec-support (~> 3.9.0)
46
+ rspec-support (~> 3.10.0)
43
47
  rspec-its (1.3.0)
44
48
  rspec-core (>= 3.0.0)
45
49
  rspec-expectations (>= 3.0.0)
46
- rspec-mocks (3.9.1)
50
+ rspec-mocks (3.10.2)
47
51
  diff-lcs (>= 1.2.0, < 2.0)
48
- rspec-support (~> 3.9.0)
49
- rspec-support (3.9.2)
50
- ruby-progressbar (1.10.1)
51
- simplecov (0.17.1)
52
+ rspec-support (~> 3.10.0)
53
+ rspec-support (3.10.2)
54
+ ruby-progressbar (1.11.0)
55
+ ruby2_keywords (0.0.5)
56
+ simplecov (0.21.2)
52
57
  docile (~> 1.1)
53
- json (>= 1.8, < 3)
54
- simplecov-html (~> 0.10.0)
55
- simplecov-html (0.10.2)
56
- unf (0.1.4)
57
- unf_ext
58
- unf_ext (0.0.7.6)
59
- unirest-2x (1.1.3)
60
- addressable (~> 2.4)
61
- json (~> 2.0)
62
- rest-client (~> 2.0)
58
+ simplecov-html (~> 0.11)
59
+ simplecov_json_formatter (~> 0.1)
60
+ simplecov-html (0.12.3)
61
+ simplecov_json_formatter (0.1.3)
63
62
 
64
63
  PLATFORMS
65
64
  ruby
66
65
 
67
66
  DEPENDENCIES
68
- bundler (~> 2.1.4)
69
- fuubar (~> 2.5.0)
70
- json (~> 2.3.0)
71
- rake (~> 13.0.1)
72
- rspec (~> 3.9.0)
67
+ bundler (~> 2.2.27)
68
+ fuubar (~> 2.5.1)
69
+ rake (~> 13.0.6)
70
+ rspec (~> 3.10.0)
73
71
  rspec-its (~> 1.3.0)
74
- simplecov (~> 0.17.1)
72
+ simplecov (~> 0.21.2)
75
73
  triviacrack!
76
74
 
77
75
  BUNDLED WITH
78
- 2.1.4
76
+ 2.2.27
@@ -1,4 +1,5 @@
1
- require "unirest"
1
+ require "json"
2
+ require "faraday"
2
3
 
3
4
  require "triviacrack/errors/request_error"
4
5
 
@@ -13,11 +14,10 @@ module TriviaCrack
13
14
  # url - The URL of the TriviaCrack API resource.
14
15
  # parameters - The parameters to send with the request.
15
16
  #
16
- # Returns a Unirest Response object with the server's response.
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 = Unirest.get "#{API_HOST}#{url}", parameters: parameters,
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
@@ -28,11 +28,10 @@ module TriviaCrack
28
28
  # url - The URL of the TriviaCrack API resource.
29
29
  # parameters - The parameters to send with the request.
30
30
  #
31
- # Returns a Unirest Response object with the server's response.
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 = Unirest.post "#{API_HOST}#{url}", parameters: parameters,
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
@@ -59,17 +58,17 @@ module TriviaCrack
59
58
  # Internal: Checks the response's code to see if the request was
60
59
  # successful
61
60
  #
62
- # response - Unirest response returned by the API.
61
+ # response - Faraday response returned by the API.
63
62
  #
64
- # Returns the response object.
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
- if not response.code.between? 200, 299
68
- raise TriviaCrack::Errors::RequestError.new(response.code, url, response.body),
69
- "Request to #{API_HOST}#{url} failed with code #{response.code}."
66
+ if not response.status.between? 200, 299
67
+ raise TriviaCrack::Errors::RequestError.new(response.status, url, response.body),
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
@@ -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.body["list"]
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.body
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
@@ -64,7 +65,7 @@ module TriviaCrack
64
65
  response = post "/api/users/#{@session.user_id}/games",
65
66
  parameters: { language: "EN" }.to_json
66
67
 
67
- TriviaCrack::Parsers::GameParser.parse response.body
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
 
@@ -27,7 +28,7 @@ module TriviaCrack
27
28
  language: "en"
28
29
  }.to_json
29
30
 
30
- @session = TriviaCrack::Parsers::SessionParser.parse response.body
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.body
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.body
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
 
@@ -11,7 +12,7 @@ module TriviaCrack
11
12
 
12
13
  # Public: Uses the Trivia Crack API to answer the given question.
13
14
  #
14
- # game - The ID of the TriviaCrack::Game.
15
+ # game_id - The ID of the TriviaCrack::Game.
15
16
  # question - The TriviaCrack::Question.
16
17
  # answer - The index of the answer to be submitted.
17
18
  #
@@ -33,11 +34,52 @@ module TriviaCrack
33
34
  }]
34
35
  }.to_json
35
36
 
36
- game = TriviaCrack::Parsers::GameParser.parse response.body
37
+ game = TriviaCrack::Parsers::GameParser.parse response
37
38
 
38
39
  [game, answer == question.correct_answer]
39
40
  end
40
41
 
42
+ # Public: Uses the Trivia Crack API to answer duel questions for the game.
43
+ #
44
+ # game_id - The ID of the TriviaCrack::Game.
45
+ # questions - The array of TriviaCrack::Question to answer
46
+ # answer_map - Hash of question ID / answer indices.
47
+ #
48
+ # Examples
49
+ #
50
+ # answers = {}
51
+ # for question in game.questions do
52
+ # answers[question.id] = <some answer index> // 0, 1, 2 or 3
53
+ # end
54
+ # answer_questions game.id, game.questions, answers
55
+ #
56
+ # Returns the update TriviaCrack::Game object, as well as a map
57
+ # with an entry for each question ID and a boolean indicating if
58
+ # the question was answered successfully.
59
+ # Raises TriviaCrack::Errors::RequestError if the request fails
60
+ def answer_questions(game_id, questions, answer_map)
61
+ answers = []
62
+ correct_answers = {}
63
+
64
+ for question in questions do
65
+ answer = {
66
+ id: question.id,
67
+ answer: answer_map[question.id],
68
+ category: question.category.upcase
69
+ }
70
+ answers << answer
71
+ correct_answers[question.id] = answer_map[question.id] == question.correct_answer
72
+ end
73
+
74
+ response =
75
+ post "/api/users/#{@session.user_id}/games/#{game_id}/answers",
76
+ parameters: { type: questions.first.type.upcase, answers: answers }.to_json
77
+
78
+ game = TriviaCrack::Parsers::GameParser.parse response
79
+
80
+ [game, correct_answers]
81
+ end
82
+
41
83
  end
42
84
  end
43
85
  end
@@ -26,9 +26,7 @@ module TriviaCrack
26
26
  username = username[1..-1]
27
27
  end
28
28
 
29
- response = get "/api/search?username=#{username}"
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.body
49
+ TriviaCrack::Parsers::UserParser.parse response
52
50
  end
53
51
 
54
52
  end
@@ -31,6 +31,12 @@ module TriviaCrack
31
31
  question = TriviaCrack::Parsers::QuestionParser.parse q_data
32
32
  questions << question
33
33
  end
34
+ if raw_data["spins_data"]["spins"][0]["type"] == "DUEL"
35
+ q_data = raw_data["spins_data"]["spins"][0]["tie_break_question"]
36
+ q_data["type"] = raw_data["spins_data"]["spins"][0]["type"]
37
+ question = TriviaCrack::Parsers::QuestionParser.parse q_data
38
+ questions << question
39
+ end
34
40
  end
35
41
 
36
42
  if raw_data["available_crowns"]
@@ -1,4 +1,4 @@
1
1
  # Public: The version of this gem.
2
2
  module TriviaCrack
3
- VERSION = "0.3.2"
3
+ VERSION = "0.6.0"
4
4
  end
@@ -5,10 +5,10 @@ describe TriviaCrack::API::Game do
5
5
  let(:session) { TriviaCrack::Session.new session_id: "session", user_id: 1 }
6
6
  let(:client) { (Class.new(APIStub) { include TriviaCrack::API::Game }).new session }
7
7
 
8
- let(:response) { double(code: code, body: raw_data) }
8
+ let(:response) { double(status: code, body: raw_data) }
9
9
 
10
- before { allow(Unirest).to receive(:get) { response } }
11
- before { allow(Unirest).to receive(:post) { response } }
10
+ before { allow(Faraday).to receive(:get) { response } }
11
+ before { allow(Faraday).to receive(:post) { response } }
12
12
 
13
13
  describe "#get_games" do
14
14
 
@@ -4,9 +4,9 @@ describe TriviaCrack::API::Login do
4
4
 
5
5
  let(:client) { (Class.new(APIStub) { include TriviaCrack::API::Login }).new }
6
6
 
7
- let(:response) { double(code: code, body: raw_data) }
7
+ let(:response) { double(status: code, body: raw_data) }
8
8
 
9
- before { allow(Unirest).to receive(:post) { response } }
9
+ before { allow(Faraday).to receive(:post) { response } }
10
10
 
11
11
  describe "#login" do
12
12
 
@@ -5,9 +5,9 @@ describe TriviaCrack::API::Profile do
5
5
  let(:session) { TriviaCrack::Session.new session_id: "session", user_id: 1 }
6
6
  let(:client) { (Class.new(APIStub) { include TriviaCrack::API::Profile }).new session }
7
7
 
8
- let(:response) { double(code: code, body: raw_data) }
8
+ let(:response) { double(status: code, body: raw_data) }
9
9
 
10
- before { allow(Unirest).to receive(:get) { response } }
10
+ before { allow(Faraday).to receive(:get) { response } }
11
11
 
12
12
  describe "#get_profile" do
13
13
  let(:user_id) { 111 }
@@ -5,9 +5,9 @@ describe TriviaCrack::API::Question do
5
5
  let(:session) { TriviaCrack::Session.new session_id: "session", user_id: 1 }
6
6
  let(:client) { (Class.new(APIStub) { include TriviaCrack::API::Question }).new session }
7
7
 
8
- let(:response) { double(code: code, body: raw_data) }
8
+ let(:response) { double(status: code, body: raw_data) }
9
9
 
10
- before { allow(Unirest).to receive(:post) { response } }
10
+ before { allow(Faraday).to receive(:post) { response } }
11
11
 
12
12
  describe "#answer_question" do
13
13
 
@@ -17,7 +17,7 @@ describe TriviaCrack::API::Question do
17
17
  let(:question) { double(id: 1, correct_answer: 1, type: "NORMAL", category: "SPORTS") }
18
18
  let(:game_id) { 22 }
19
19
 
20
- context 'given that the question was answer correctly' do
20
+ context 'given that the question was answered correctly' do
21
21
  let(:code) { 200 }
22
22
  let(:answer) { 1 }
23
23
 
@@ -26,7 +26,7 @@ describe TriviaCrack::API::Question do
26
26
  it { expect(subject[1]).to be true }
27
27
  end
28
28
 
29
- context 'given that the question was answer incorrectly' do
29
+ context 'given that the question was answered incorrectly' do
30
30
  let(:code) { 200 }
31
31
  let(:answer) { 0 }
32
32
 
@@ -46,4 +46,46 @@ describe TriviaCrack::API::Question do
46
46
  .and having_attributes(url: "/api/users/#{session.user_id}/games/#{game_id}/answers")) }
47
47
  end
48
48
  end
49
+
50
+ describe "#answer_questions" do
51
+
52
+ subject { client.answer_questions game_id, questions, answers }
53
+
54
+ let(:raw_data) { SpecData.get "answer.json" }
55
+ let(:question_one) { double(id: 1, correct_answer: 1, type: "DUEL", category: "SPORTS") }
56
+ let(:question_two) { double(id: 2, correct_answer: 2, type: "DUEL", category: "ART") }
57
+ let(:questions) { [question_one, question_two] }
58
+ let(:game_id) { 22 }
59
+
60
+ context 'given that the questions were answered correctly' do
61
+ let(:code) { 200 }
62
+ let(:answers) { {1 => 1, 2 => 2} }
63
+
64
+ it { expect(TriviaCrack::Parsers::GameParser).to receive(:parse).once; subject }
65
+ it { expect(subject[0]).to be_a TriviaCrack::Game }
66
+ it { expect(subject[1][1]).to be true }
67
+ it { expect(subject[1][2]).to be true }
68
+ end
69
+
70
+ context 'given that a question was answered incorrectly' do
71
+ let(:code) { 200 }
72
+ let(:answers) { {1 => 1, 2 => 3} }
73
+
74
+ it { expect(TriviaCrack::Parsers::GameParser).to receive(:parse).once; subject }
75
+ it { expect(subject[0]).to be_a TriviaCrack::Game }
76
+ it { expect(subject[1][1]).to be true }
77
+ it { expect(subject[1][2]).to be false }
78
+ end
79
+
80
+ context 'given that the request fails' do
81
+ let(:code) { 400 }
82
+ let(:answers) { {1 => 1, 2 => 2} }
83
+
84
+ it { expect{ subject }.to raise_error TriviaCrack::Errors::RequestError }
85
+ it { expect{ subject }.to raise_error(an_instance_of(TriviaCrack::Errors::RequestError)
86
+ .and having_attributes(code: code)) }
87
+ it { expect{ subject }.to raise_error(an_instance_of(TriviaCrack::Errors::RequestError)
88
+ .and having_attributes(url: "/api/users/#{session.user_id}/games/#{game_id}/answers")) }
89
+ end
90
+ end
49
91
  end
@@ -5,9 +5,9 @@ describe TriviaCrack::API::User do
5
5
  let(:session) { TriviaCrack::Session.new session_id: "session", user_id: 1 }
6
6
  let(:client) { (Class.new(APIStub) { include TriviaCrack::API::User }).new session }
7
7
 
8
- let(:response) { double(code: code, body: raw_data) }
8
+ let(:response) { double(status: code, body: raw_data) }
9
9
 
10
- before { allow(Unirest).to receive(:get) { response } }
10
+ before { allow(Faraday).to receive(:get) { response } }
11
11
 
12
12
  describe "#get_user_id" do
13
13
  let(:username) { "example.2" }
@@ -0,0 +1,336 @@
1
+ {
2
+ "id": 1119,
3
+ "safeOpponentSelectionType": "RANDOM",
4
+ "spins_data": {
5
+ "spins": [
6
+ {
7
+ "type": "DUEL",
8
+ "second_chance_available": false,
9
+ "questions": [
10
+ {
11
+ "question": {
12
+ "id": 17881223,
13
+ "category": "HISTORY",
14
+ "text": "The Suffrage movement pertained to what?",
15
+ "answers": [
16
+ "Prohibition",
17
+ "Racial Equality",
18
+ "Women's Rights",
19
+ "Right To Unionize"
20
+ ],
21
+ "correct_answer": 2,
22
+ "media_type": "NORMAL",
23
+ "author": {
24
+ "id": 82565321,
25
+ "name": "anniesparkles",
26
+ "username": "anniesparkles",
27
+ "fb_show_picture": false,
28
+ "fb_show_name": false,
29
+ "gender": "UNSPECIFIED"
30
+ }
31
+ }
32
+ },
33
+ {
34
+ "question": {
35
+ "id": 53333638,
36
+ "category": "GEOGRAPHY",
37
+ "text": "Where is Slovakia?",
38
+ "answers": [
39
+ "Oceania",
40
+ "Africa",
41
+ "Europe",
42
+ "Asia"
43
+ ],
44
+ "correct_answer": 2,
45
+ "media_type": "NORMAL",
46
+ "author": {
47
+ "id": 204000197,
48
+ "name": "martingres",
49
+ "username": "martingres",
50
+ "fb_show_picture": false,
51
+ "fb_show_name": false,
52
+ "gender": "UNSPECIFIED"
53
+ }
54
+ }
55
+ },
56
+ {
57
+ "question": {
58
+ "id": 62181053,
59
+ "category": "ARTS",
60
+ "text": "Who has painted the Sistine Chapel?",
61
+ "answers": [
62
+ "Michelangelo",
63
+ "Van Gogh",
64
+ "Picasso",
65
+ "Mezzosin"
66
+ ],
67
+ "correct_answer": 0,
68
+ "media_type": "NORMAL",
69
+ "author": {
70
+ "id": 223909199,
71
+ "facebook_id": "843171349124950",
72
+ "name": "Kristina Marie Poulsen",
73
+ "username": "kp89facebook",
74
+ "facebook_name": "Kristina Marie Poulsen",
75
+ "fb_show_picture": true,
76
+ "fb_show_name": true,
77
+ "gender": "female"
78
+ },
79
+ "translator": {
80
+ "id": 252287897,
81
+ "name": "ragingraids",
82
+ "username": "ragingraids",
83
+ "fb_show_picture": false,
84
+ "fb_show_name": false,
85
+ "gender": "UNSPECIFIED"
86
+ }
87
+ }
88
+ },
89
+ {
90
+ "question": {
91
+ "id": 51360542,
92
+ "category": "SPORTS",
93
+ "text": "What two Allstars have the number of 23?",
94
+ "answers": [
95
+ "Steph Curry And Blake Griffen",
96
+ "Lebron James And Michael Jordan",
97
+ "Chris Paul And Jr Smith",
98
+ "Clay Thompson And Kevin Love"
99
+ ],
100
+ "correct_answer": 1,
101
+ "media_type": "NORMAL",
102
+ "author": {
103
+ "id": 200488852,
104
+ "name": "mitchelldonegan06",
105
+ "username": "mitchelldonegan06",
106
+ "fb_show_picture": false,
107
+ "fb_show_name": false,
108
+ "gender": "UNSPECIFIED"
109
+ }
110
+ }
111
+ },
112
+ {
113
+ "question": {
114
+ "id": 11817577,
115
+ "category": "ENTERTAINMENT",
116
+ "text": "Which pop star calls her fans \"Monsters\"?",
117
+ "answers": [
118
+ "Madonna",
119
+ "Lady Gaga",
120
+ "Britney Spears",
121
+ "Christina Aguilera"
122
+ ],
123
+ "correct_answer": 1,
124
+ "media_type": "NORMAL",
125
+ "author": {
126
+ "id": 51771646,
127
+ "facebook_id": "",
128
+ "name": "linda.tsacalides",
129
+ "username": "linda.tsacalides",
130
+ "facebook_name": "UNSPECIFIED",
131
+ "fb_show_picture": false,
132
+ "fb_show_name": false,
133
+ "gender": "female"
134
+ }
135
+ }
136
+ },
137
+ {
138
+ "question": {
139
+ "id": 54733278,
140
+ "category": "SCIENCE",
141
+ "text": "Which is NOT a blood type?",
142
+ "answers": [
143
+ "Ab",
144
+ "Oa",
145
+ "O",
146
+ "B"
147
+ ],
148
+ "correct_answer": 1,
149
+ "media_type": "NORMAL",
150
+ "author": {
151
+ "id": 114837290,
152
+ "name": "rocat26",
153
+ "username": "rocat26",
154
+ "fb_show_picture": false,
155
+ "fb_show_name": false,
156
+ "gender": "female"
157
+ }
158
+ }
159
+ }
160
+ ],
161
+ "tie_break_question": {
162
+ "id": 51774,
163
+ "category": "HISTORY",
164
+ "text": "Which historical figure is famous for being short?",
165
+ "answers": [
166
+ "Napoleon",
167
+ "Stalin",
168
+ "Bismark",
169
+ "Julius Caesar"
170
+ ],
171
+ "correct_answer": 0,
172
+ "media_type": "NORMAL",
173
+ "author": {
174
+ "id": 23831917,
175
+ "facebook_id": "100006890463075",
176
+ "name": "Igor Gardella Trifunovic",
177
+ "username": "kider.jo",
178
+ "facebook_name": "Igor Gardella Trifunovic",
179
+ "fb_show_picture": true,
180
+ "fb_show_name": true,
181
+ "gender": "UNSPECIFIED"
182
+ },
183
+ "translator": {
184
+ "id": 100940141,
185
+ "facebook_id": "100002352524111",
186
+ "name": "Abigail Morgan",
187
+ "username": "almangel21",
188
+ "facebook_name": "Abigail Morgan",
189
+ "fb_show_picture": true,
190
+ "fb_show_name": true,
191
+ "gender": "female"
192
+ }
193
+ }
194
+ }
195
+ ]
196
+ },
197
+ "available_crowns": [
198
+ "SCIENCE",
199
+ "HISTORY",
200
+ "ENTERTAINMENT",
201
+ "SPORTS"
202
+ ],
203
+ "my_player_number": 1,
204
+ "player_one": {
205
+ "charges": 3,
206
+ "crowns": [
207
+ "GEOGRAPHY",
208
+ "ARTS"
209
+ ]
210
+ },
211
+ "player_two": {
212
+ "charges": 0,
213
+ "crowns": [
214
+ "SCIENCE"
215
+ ]
216
+ },
217
+ "round_number": 2,
218
+ "crown_events": [
219
+ {
220
+ "timestamp": 1583628928756,
221
+ "userId": 123,
222
+ "category": "SCIENCE",
223
+ "won": true
224
+ }
225
+ ],
226
+ "sub_status": "P1_PLAYING_TURN",
227
+ "previous_sub_status": "P1_PLAYING_TURN",
228
+ "statistics": {
229
+ "player_one_statistics": {
230
+ "category_questions": [
231
+ {
232
+ "category": "HISTORY",
233
+ "correct": 1,
234
+ "incorrect": 0,
235
+ "worst": false
236
+ },
237
+ {
238
+ "category": "SCIENCE",
239
+ "correct": 2,
240
+ "incorrect": 0,
241
+ "worst": false
242
+ },
243
+ {
244
+ "category": "ARTS",
245
+ "correct": 3,
246
+ "incorrect": 0,
247
+ "worst": false
248
+ },
249
+ {
250
+ "category": "ENTERTAINMENT",
251
+ "correct": 0,
252
+ "incorrect": 1,
253
+ "worst": true,
254
+ "performance": 0
255
+ },
256
+ {
257
+ "category": "SPORTS",
258
+ "correct": 2,
259
+ "incorrect": 0,
260
+ "worst": false
261
+ },
262
+ {
263
+ "category": "GEOGRAPHY",
264
+ "correct": 1,
265
+ "incorrect": 0,
266
+ "worst": false
267
+ }
268
+ ],
269
+ "correct_answers": 9,
270
+ "incorrect_answers": 1,
271
+ "challenges_won": 0,
272
+ "questions_answered": 10,
273
+ "crowns_won": 2
274
+ },
275
+ "player_two_statistics": {
276
+ "category_questions": [
277
+ {
278
+ "category": "HISTORY",
279
+ "correct": 0,
280
+ "incorrect": 1,
281
+ "worst": false
282
+ },
283
+ {
284
+ "category": "SCIENCE",
285
+ "correct": 1,
286
+ "incorrect": 0,
287
+ "worst": false
288
+ }
289
+ ],
290
+ "correct_answers": 1,
291
+ "incorrect_answers": 1,
292
+ "challenges_won": 0,
293
+ "questions_answered": 2,
294
+ "crowns_won": 1
295
+ }
296
+ },
297
+ "is_random": true,
298
+ "unread_messages": 0,
299
+ "last_turn": "03/07/2020 19:56:48 EST",
300
+ "status_version": 13,
301
+ "my_level_data": {
302
+ "level": 16,
303
+ "points": 152,
304
+ "goal_points": 168,
305
+ "progress": 11,
306
+ "level_up": true
307
+ },
308
+ "opponent_selection_type": "RANDOM",
309
+ "nudge_available": false,
310
+ "opponent": {
311
+ "id": 321,
312
+ "alerts_count": 0,
313
+ "username": "aaa",
314
+ "facebook_id": "123",
315
+ "facebookId": {
316
+ "value": "",
317
+ "defined": false
318
+ },
319
+ "facebook_name": "a b",
320
+ "fb_show_picture": true,
321
+ "fb_show_name": true,
322
+ "allow_og_posts": true,
323
+ "photo_url": "",
324
+ "level_data": {
325
+ "level": 6
326
+ },
327
+ "is_friend": false,
328
+ "league_name": "APPRENTICE_1"
329
+ },
330
+ "game_status": "ACTIVE",
331
+ "language": "EN",
332
+ "created": "03/07/2020 19:30:03 EST",
333
+ "type": "NORMAL",
334
+ "my_turn": true,
335
+ "expiration_date": "03/09/2020 07:56:48 EST"
336
+ }
@@ -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.get "game.json" }
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.get("dashboard.json")["list"][3] }
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.get "answer.json" }
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.get "game.json" }
10
- let(:dashboard_data) { SpecData.get "dashboard.json" }
11
- let(:answer_data) { SpecData.get "answer.json" }
12
- let(:new_game_data) { SpecData.get "new_game.json" }
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.get "game.json" }
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.get("dashboard.json")["list"][3] }
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.get "answer.json" }
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.get "new_game.json" }
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 }
@@ -110,5 +110,31 @@ describe TriviaCrack::Parsers::GameParser do
110
110
  its(:my_statistics) { is_expected.to be_a TriviaCrack::GameStatistics }
111
111
  its(:opponent_statistics) { is_expected.to be_a TriviaCrack::GameStatistics }
112
112
  end
113
+
114
+ context 'when given data from the games API and the game is a duel' do
115
+ let(:raw_data) { SpecData.get_json "game_duel.json" }
116
+
117
+ it { is_expected.to be_a TriviaCrack::Game }
118
+ its(:id) { is_expected.to be 1119 }
119
+ its(:opponent) { is_expected.to be_a TriviaCrack::User }
120
+ its('opponent.id') { is_expected.to be 321 }
121
+ its(:game_status) { is_expected.to be :active }
122
+ its(:language) { is_expected.to be :en }
123
+ its(:created) { is_expected.to be_a Time }
124
+ its(:last_turn) { is_expected.to be_a Time }
125
+ its(:type) { is_expected.to be :normal }
126
+ its(:expiration_date) { is_expected.to be_a Time }
127
+ its(:my_turn) { is_expected.to be true }
128
+ its(:round_number) { is_expected.to be 2 }
129
+ its(:is_random) { is_expected.to be true }
130
+ its(:unread_messages) { is_expected.to be 0 }
131
+ its(:status_version) { is_expected.to be 13 }
132
+ its(:available_crowns) { is_expected.to contain_exactly(:entertainment, :science, :history, :sports) }
133
+ its('questions.size') { is_expected.to eq(7) }
134
+ its('questions.first') { is_expected.to be_a TriviaCrack::Question }
135
+ its('questions.first.id') { is_expected.to be 17881223 }
136
+ its(:my_statistics) { is_expected.to be_a TriviaCrack::GameStatistics }
137
+ its(:opponent_statistics) { is_expected.to be_a TriviaCrack::GameStatistics }
138
+ end
113
139
  end
114
140
  end
@@ -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.get "game.json" }
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.get("dashboard.json")["list"][3] }
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.get "answer.json" }
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.get "new_game.json" }
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.get "profile.json" }
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.get "my_profile.json" }
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.get "question.json" }
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.get "question_image.json" }
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.get "login.json" }
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.get "user.json" }
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.get("game.json")["opponent"] }
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
@@ -20,13 +20,13 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.required_ruby_version = ">= 2.0"
22
22
 
23
- spec.add_development_dependency "bundler", "~> 2.1.4"
24
- spec.add_development_dependency "simplecov", "~> 0.17.1"
25
- spec.add_development_dependency "rake", "~> 13.0.1"
26
- spec.add_development_dependency "rspec", "~> 3.9.0"
23
+ spec.add_development_dependency "bundler", "~> 2.2.27"
24
+ spec.add_development_dependency "simplecov", "~> 0.21.2"
25
+ spec.add_development_dependency "rake", "~> 13.0.6"
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.3.0"
29
- spec.add_development_dependency "fuubar", "~> 2.5.0"
28
+ spec.add_development_dependency "fuubar", "~> 2.5.1"
30
29
 
31
- spec.add_dependency "unirest-2x", "~> 1.1.3"
30
+ spec.add_dependency "json", "~> 2.5.1"
31
+ spec.add_dependency "faraday", "~> 1.7.2"
32
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: triviacrack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Kus
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-06 00:00:00.000000000 Z
11
+ date: 2021-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,56 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.1.4
19
+ version: 2.2.27
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 2.1.4
26
+ version: 2.2.27
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: simplecov
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.17.1
33
+ version: 0.21.2
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.17.1
40
+ version: 0.21.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 13.0.1
47
+ version: 13.0.6
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 13.0.1
54
+ version: 13.0.6
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 3.9.0
61
+ version: 3.10.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 3.9.0
68
+ version: 3.10.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec-its
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -81,47 +81,47 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: 1.3.0
83
83
  - !ruby/object:Gem::Dependency
84
- name: json
84
+ name: fuubar
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 2.3.0
89
+ version: 2.5.1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 2.3.0
96
+ version: 2.5.1
97
97
  - !ruby/object:Gem::Dependency
98
- name: fuubar
98
+ name: json
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 2.5.0
104
- type: :development
103
+ version: 2.5.1
104
+ type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 2.5.0
110
+ version: 2.5.1
111
111
  - !ruby/object:Gem::Dependency
112
- name: unirest-2x
112
+ name: faraday
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 1.1.3
117
+ version: 1.7.2
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 1.1.3
124
+ version: 1.7.2
125
125
  description: A Ruby interface to the Trivia Crack API.
126
126
  email:
127
127
  - david@kus.dk
@@ -133,6 +133,7 @@ files:
133
133
  - ".github/workflows/publish.yml"
134
134
  - ".gitignore"
135
135
  - ".rspec"
136
+ - ".ruby-version"
136
137
  - Gemfile
137
138
  - Gemfile.lock
138
139
  - LICENSE.txt
@@ -172,6 +173,7 @@ files:
172
173
  - spec/data/answer.json
173
174
  - spec/data/dashboard.json
174
175
  - spec/data/game.json
176
+ - spec/data/game_duel.json
175
177
  - spec/data/login.json
176
178
  - spec/data/my_profile.json
177
179
  - spec/data/new_game.json
@@ -211,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
213
  - !ruby/object:Gem::Version
212
214
  version: '0'
213
215
  requirements: []
214
- rubygems_version: 3.0.3
216
+ rubygems_version: 3.2.22
215
217
  signing_key:
216
218
  specification_version: 4
217
219
  summary: A Ruby interface to the Trivia Crack API.
@@ -224,6 +226,7 @@ test_files:
224
226
  - spec/data/answer.json
225
227
  - spec/data/dashboard.json
226
228
  - spec/data/game.json
229
+ - spec/data/game_duel.json
227
230
  - spec/data/login.json
228
231
  - spec/data/my_profile.json
229
232
  - spec/data/new_game.json