Skip to content

Commit 213320c

Browse files
committed
Support facebook on Statistics::Aggregation
1 parent 9589fab commit 213320c

File tree

3 files changed

+34
-2
lines changed

3 files changed

+34
-2
lines changed

app/models/dojo_event_service.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
class DojoEventService < ApplicationRecord
22
belongs_to :dojo
3-
enum name: %i( connpass doorkeeper )
3+
enum name: %i( connpass doorkeeper facebook )
44
end

lib/statistics/aggregation.rb

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ class << self
44
def run(date:)
55
cnps_dojos = Dojo.joins(:dojo_event_service).where(dojo_event_services: { name: :connpass }).to_a
66
drkp_dojos = Dojo.joins(:dojo_event_service).where(dojo_event_services: { name: :doorkeeper }).to_a
7+
fsbk_dojos = Dojo.joins(:dojo_event_service).where(dojo_event_services: { name: :facebook }).to_a
78

89
Connpass.run(cnps_dojos, date)
910
Doorkeeper.run(drkp_dojos, date)
11+
Facebook.run(fsbk_dojos, date)
1012
end
1113
end
1214

@@ -62,5 +64,32 @@ def run(dojos, date)
6264
end
6365
end
6466
end
67+
68+
class Facebook
69+
class << self
70+
def run(dojos, date)
71+
fsbk = Client::Facebook.new
72+
params = {
73+
since_at: date.beginning_of_month,
74+
until_at: date.end_of_month
75+
}
76+
77+
dojos.each do |dojo|
78+
fsbk.fetch_events(params.merge(group_id: dojo.dojo_event_service.group_id)).each do |e|
79+
next unless e.dig('owner', 'id') == dojo.dojo_event_service.group_id
80+
81+
EventHistory.create!(dojo_id: dojo.id,
82+
dojo_name: dojo.name,
83+
service_name: dojo.dojo_event_service.name,
84+
service_group_id: dojo.dojo_event_service.group_id,
85+
event_id: e['id'],
86+
event_url: "https://www.facebook.com/events/#{e['id']}",
87+
participants: e['attending_count'],
88+
evented_at: Time.zone.parse(e['start_time']))
89+
end
90+
end
91+
end
92+
end
93+
end
6594
end
6695
end

spec/lib/statistics/aggregation_spec.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
RSpec.describe Statistics::Aggregation do
55
include_context 'Use stubs for Connpass'
66
include_context 'Use stubs for Doorkeeper'
7+
include_context 'Use stubs for Facebook'
78

89
before(:all) do
910
Dojo.delete_all
@@ -21,14 +22,16 @@
2122
before do
2223
d1 = Dojo.create(name: 'Dojo1', email: 'info@dojo1.com', description: 'CoderDojo1', tags: %w(CoderDojo1), url: 'https://dojo1.com')
2324
d2 = Dojo.create(name: 'Dojo2', email: 'info@dojo2.com', description: 'CoderDojo2', tags: %w(CoderDojo2), url: 'https://dojo2.com')
25+
d3 = Dojo.create(name: 'Dojo3', email: 'info@dojo3.com', description: 'CoderDojo3', tags: %w(CoderDojo3), url: 'https://dojo3.com')
2426
DojoEventService.create(dojo_id: d1.id, name: :connpass, group_id: 9876)
2527
DojoEventService.create(dojo_id: d2.id, name: :doorkeeper, group_id: 5555)
28+
DojoEventService.create(dojo_id: d3.id, name: :facebook, group_id: 123451234512345)
2629
end
2730

2831
subject { Statistics::Aggregation.run(date: Time.current) }
2932

3033
it do
31-
expect{ subject }.to change{EventHistory.count}.from(0).to(2)
34+
expect{ subject }.to change{EventHistory.count}.from(0).to(3)
3235
end
3336
end
3437
end

0 commit comments

Comments
 (0)