Class: Webhookdb::Replicator::TransistorEpisodeStatsV1::EpisodeStatsBackfiller
- Inherits:
-
Backfiller
- Object
- Backfiller
- Webhookdb::Replicator::TransistorEpisodeStatsV1::EpisodeStatsBackfiller
show all
- Defined in:
- lib/webhookdb/replicator/transistor_episode_stats_v1.rb
Instance Method Summary
collapse
Methods inherited from Backfiller
#_fetch_backfill_page_with_retry, #backfill, do_retry_wait, #max_backfill_retry_attempts, #wait_for_retry_attempt
Constructor Details
#initialize(episode_svc:, episode_stats_svc:, episode_id:, episode_created_at:) ⇒ EpisodeStatsBackfiller
98
99
100
101
102
103
104
|
# File 'lib/webhookdb/replicator/transistor_episode_stats_v1.rb', line 98
def initialize(episode_svc:, episode_stats_svc:, episode_id:, episode_created_at:)
@episode_svc = episode_svc
@episode_stats_svc = episode_stats_svc
@episode_id = episode_id
@episode_created_at = episode_created_at
super()
end
|
Instance Method Details
#fetch_backfill_page(_pagination_token, **_kwargs) ⇒ Object
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
# File 'lib/webhookdb/replicator/transistor_episode_stats_v1.rb', line 111
def fetch_backfill_page(, **_kwargs)
analytics_url = "https://api.transistor.fm/v1/analytics/episodes/" + @episode_id
latest_update = @episode_stats_svc.admin_dataset(timeout: :fast) do |ds|
ds.where(episode_id: @episode_id).max(:date)
end
start_date = latest_update.nil? ? @episode_created_at : (latest_update - 2.days)
request_body = {
start_date: start_date.strftime("%d-%m-%Y"),
end_date: Time.now.strftime("%d-%m-%Y"),
}
response = Webhookdb::Http.get(
analytics_url,
headers: {"x-api-key" => @episode_svc.service_integration.backfill_key},
body: request_body,
logger: @episode_stats_svc.logger,
timeout: Webhookdb::Transistor.http_timeout,
)
data = response.parsed_response.dig("data", "attributes", "downloads") || []
return data, nil
end
|
#handle_item(item) ⇒ Object
106
107
108
109
|
# File 'lib/webhookdb/replicator/transistor_episode_stats_v1.rb', line 106
def handle_item(item)
item["episode_id"] = @episode_id
@episode_stats_svc.upsert_webhook_body(item)
end
|