Class: Publication::CloudflareTrafficSummary
- Inherits:
-
Object
- Object
- Publication::CloudflareTrafficSummary
- Defined in:
- app/services/publication/cloudflare_traffic_summary.rb
Overview
Rolling Cloudflare edge-analytics PDF download counts for a single publication.
Reads the cloudflare_pdf_requests data points that Seo::CloudflareSyncService
writes nightly to site_map_data_points. Used by the CRM publication show page
to surface an accurate download count — one that, unlike the Rails
requested_counter, includes the 30-day edge-cache hits that never reach the
origin.
Defined Under Namespace
Classes: Result
Constant Summary collapse
- METRIC =
Cloudflare metric type stored in site_map_data_points. A publication's
SiteMap path is its .pdf URL, so for publications this metric is the
PDF download count. 'cloudflare_requests'
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(publication) ⇒ CloudflareTrafficSummary
constructor
A new instance of CloudflareTrafficSummary.
- #result ⇒ Result
Constructor Details
#initialize(publication) ⇒ CloudflareTrafficSummary
Returns a new instance of CloudflareTrafficSummary.
43 44 45 |
# File 'app/services/publication/cloudflare_traffic_summary.rb', line 43 def initialize(publication) @publication = publication end |
Class Method Details
.for(publication) ⇒ Result
40 |
# File 'app/services/publication/cloudflare_traffic_summary.rb', line 40 def self.for(publication) = new(publication).result |
Instance Method Details
#result ⇒ Result
48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'app/services/publication/cloudflare_traffic_summary.rb', line 48 def result ids = site_map_ids return Result.new if ids.empty? scope = SiteMapDataPoint.where(site_map_id: ids, metric_type: METRIC) last_synced_on = scope.maximum(Arel.sql('lower(period)'))&.to_date Result.new( pdf_requests_30d: window_sum(scope, 30), pdf_requests_90d: window_sum(scope, 90), last_synced_on: last_synced_on, site_map_id: anchor_site_map_id(scope) ) end |