spoll 0.2.0 → 0.3.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/lib/spoll/client.rb +13 -7
- data/lib/spoll/models/base.rb +28 -0
- data/lib/spoll/models/event.rb +6 -5
- data/lib/spoll/models/match.rb +6 -39
- data/lib/spoll/response.rb +45 -2
- data/lib/spoll/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84c96351fb151e16778a9bf6d8d47ccdf88bd30a
|
4
|
+
data.tar.gz: e6e8ead477d379bc25b94bb3d7e8cbf49fd70d43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 043a9f772592a874b40a8325cb501a80b8b6acd36b3041fc3923a679b5e9826f37fbccb609041212bf2068bf55959fd291e2111f2523424a6f191edb996e18e0
|
7
|
+
data.tar.gz: 566a87841753105ac4c180ab94056f660974f08ad20d18633f665fc5d1eadea71e7fa7c27e8253ecebd953688ea11d5c481dfd69ed665eb910f9a8366e6c1d1e
|
data/lib/spoll/client.rb
CHANGED
@@ -19,10 +19,12 @@ module Spoll
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def get_match(id, params = {})
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
json = get("/matches/#{id}", params)
|
23
|
+
response = Spoll::Response.new(json)
|
24
|
+
match = Models::Match.new(json.parsed['match'])
|
25
|
+
match.set_relations(response)
|
26
|
+
response.match = match
|
27
|
+
response
|
26
28
|
end
|
27
29
|
|
28
30
|
def get_events(params)
|
@@ -30,7 +32,12 @@ module Spoll
|
|
30
32
|
end
|
31
33
|
|
32
34
|
def get_event(id, params = {})
|
33
|
-
get("/events/#{id}", params)
|
35
|
+
json = get("/events/#{id}", params)
|
36
|
+
response = Spoll::Response.new(json)
|
37
|
+
event = Models::Event.new(json.parsed['event'])
|
38
|
+
event.set_relations(response)
|
39
|
+
response.event = event
|
40
|
+
response
|
34
41
|
end
|
35
42
|
|
36
43
|
private
|
@@ -72,8 +79,7 @@ module Spoll
|
|
72
79
|
error.response
|
73
80
|
end
|
74
81
|
end
|
75
|
-
|
76
82
|
end
|
77
|
-
end
|
78
83
|
|
84
|
+
end
|
79
85
|
end
|
data/lib/spoll/models/base.rb
CHANGED
@@ -2,6 +2,23 @@ module Spoll::Models
|
|
2
2
|
class Base
|
3
3
|
include Virtus.model(nullify_blank: true)
|
4
4
|
|
5
|
+
attribute :id, Integer
|
6
|
+
|
7
|
+
def set_relations(response)
|
8
|
+
end
|
9
|
+
|
10
|
+
def set_relation(relation, data, primary_key, foreign_key)
|
11
|
+
record = find_by(data, primary_key, send(foreign_key))
|
12
|
+
send("#{relation}=", record)
|
13
|
+
end
|
14
|
+
|
15
|
+
def set_array_relation(relation, data, primary_key, foreign_key)
|
16
|
+
records = find_all(data, primary_key, send(foreign_key))
|
17
|
+
send("#{relation}=", records)
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
5
22
|
def find_by(json, key, value)
|
6
23
|
json.each do |record|
|
7
24
|
return record if record[key].eql?(value)
|
@@ -9,5 +26,16 @@ module Spoll::Models
|
|
9
26
|
|
10
27
|
nil
|
11
28
|
end
|
29
|
+
|
30
|
+
def find_all(json, key, value)
|
31
|
+
result = []
|
32
|
+
|
33
|
+
json.each do |record|
|
34
|
+
result << record if record[key].eql?(value)
|
35
|
+
end
|
36
|
+
|
37
|
+
result
|
38
|
+
end
|
39
|
+
|
12
40
|
end
|
13
41
|
end
|
data/lib/spoll/models/event.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
module Spoll::Models
|
2
2
|
class Event < Base
|
3
|
+
attr_accessor :event_type, :match
|
4
|
+
|
3
5
|
attribute :minute, Integer
|
4
6
|
attribute :comments_count, Integer
|
5
7
|
attribute :agrees, Integer
|
6
8
|
attribute :disagrees, Integer
|
7
9
|
attribute :event_type_id, Integer
|
8
|
-
attribute :
|
10
|
+
attribute :match_id, Integer
|
9
11
|
|
10
|
-
def
|
11
|
-
|
12
|
-
|
13
|
-
end
|
12
|
+
def set_relations(response)
|
13
|
+
set_relation(:event_type, response.event_types, 'id', :event_type_id)
|
14
|
+
set_relation(:match, response.matches, 'id', :match_id)
|
14
15
|
end
|
15
16
|
end
|
16
17
|
end
|
data/lib/spoll/models/match.rb
CHANGED
@@ -1,50 +1,17 @@
|
|
1
1
|
module Spoll::Models
|
2
2
|
class Match < Base
|
3
|
+
attr_accessor :events, :home_team, :away_team
|
4
|
+
|
3
5
|
attribute :start_time, DateTime
|
4
|
-
attribute :home_team, Team
|
5
|
-
attribute :away_team, Team
|
6
6
|
attribute :status, String
|
7
7
|
attribute :home_team_id, Integer
|
8
8
|
attribute :away_team_id, Integer
|
9
|
-
attribute :events, Array[Event]
|
10
|
-
|
11
|
-
def initialize(json)
|
12
|
-
match = json['match']
|
13
|
-
|
14
|
-
self.start_time = match['start_time']
|
15
|
-
self.status = match['status']
|
16
|
-
self.home_team_id = match['home_team_id']
|
17
|
-
self.away_team_id = match['away_team_id']
|
18
|
-
include_teams(json['teams'])
|
19
|
-
include_events(json['events'], json['event_types'])
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
9
|
|
24
|
-
def
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
end
|
10
|
+
def set_relations(response)
|
11
|
+
set_array_relation(:events, response.events, 'match_id', :id)
|
12
|
+
set_relation(:home_team, response.teams, 'id', :home_team_id)
|
13
|
+
set_relation(:away_team, response.teams, 'id', :away_team_id)
|
29
14
|
end
|
30
15
|
|
31
|
-
def include_events(events, event_types)
|
32
|
-
if events.present?
|
33
|
-
all = []
|
34
|
-
|
35
|
-
events.each do |event|
|
36
|
-
e = Event.new(event)
|
37
|
-
e.set_event_type(event_types)
|
38
|
-
all << e
|
39
|
-
end
|
40
|
-
|
41
|
-
self.events = all
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def init_team(json, id)
|
46
|
-
team = find_by(json, 'id', id)
|
47
|
-
Team.new(team)
|
48
|
-
end
|
49
16
|
end
|
50
17
|
end
|
data/lib/spoll/response.rb
CHANGED
@@ -1,13 +1,56 @@
|
|
1
1
|
module Spoll
|
2
2
|
class Response
|
3
|
-
attr_accessor :match
|
3
|
+
attr_accessor :match, :matches,
|
4
|
+
:event, :events,
|
5
|
+
:event_type, :event_types,
|
6
|
+
:teams, :team
|
7
|
+
|
4
8
|
|
5
9
|
def initialize(response)
|
6
|
-
@response
|
10
|
+
@response = response
|
11
|
+
@matches = []
|
12
|
+
@events = []
|
13
|
+
@event_types = []
|
14
|
+
@teams = []
|
15
|
+
|
16
|
+
includes = [
|
17
|
+
{ model: Spoll::Models::Match, key: 'matches', attribute: @matches },
|
18
|
+
{ model: Spoll::Models::Event, key: 'events', attribute: @events },
|
19
|
+
{ model: Spoll::Models::EventType, key: 'event_types', attribute: @event_types },
|
20
|
+
{ model: Spoll::Models::Team, key: 'teams', attribute: @teams }
|
21
|
+
]
|
22
|
+
|
23
|
+
load_includes(includes)
|
24
|
+
set_relations(includes)
|
7
25
|
end
|
8
26
|
|
9
27
|
def status
|
10
28
|
@response.status
|
11
29
|
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def load_includes(includes)
|
34
|
+
includes.each do |hash|
|
35
|
+
load_include(hash[:model], hash[:key], hash[:attribute])
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def load_include(model, key, attribute)
|
40
|
+
if @response.parsed.key?(key)
|
41
|
+
@response.parsed[key].each do |record|
|
42
|
+
attribute << model.new(record)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def set_relations(includes)
|
48
|
+
includes.each do |hash|
|
49
|
+
hash[:attribute].each do |record|
|
50
|
+
record.set_relations(self)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
12
55
|
end
|
13
56
|
end
|
data/lib/spoll/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spoll
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "İ. Emre Kutlu"
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oauth2
|