Class: Conversant::V3::Services::CDN::Partner::Analytics
- Inherits:
-
Object
- Object
- Conversant::V3::Services::CDN::Partner::Analytics
- Defined in:
- lib/conversant/v3/services/cdn/partner/analytics.rb
Overview
CDN analytics service for partner-level reporting
Provides partner-level analytics and reporting for CDN services including bandwidth, volume, traffic usage, storage, and viewer metrics across multiple customer accounts.
Instance Attribute Summary collapse
-
#parent ⇒ Conversant::V3::Services::CDN
readonly
The parent CDN service instance.
Instance Method Summary collapse
-
#bandwidth(payload) ⇒ Hash
Get partner-level bandwidth metrics.
-
#domain_http_codes(customer_id, payload) ⇒ Hash
Get HTTP status codes for specific domains.
-
#domain_rps(params) ⇒ Hash
Get request per second for specific domain.
-
#domain_traffic_usage(payload) ⇒ Hash
Get domain traffic usage for billing purposes.
-
#domain_volume(payload) ⇒ Hash
Get volume metrics for a specific domain.
-
#initialize(parent) ⇒ Analytics
constructor
Initialize partner CDN analytics service.
-
#request_per_second(params) ⇒ Hash
Get partner-level request per second metrics.
-
#usages(payload) ⇒ Integer
Get storage usage for a customer.
-
#viewers(payload) ⇒ Hash
Get partner-level viewer metrics.
-
#volume(payload) ⇒ Hash
Get partner-level volume metrics.
Constructor Details
#initialize(parent) ⇒ Analytics
Initialize partner CDN analytics service
33 34 35 |
# File 'lib/conversant/v3/services/cdn/partner/analytics.rb', line 33 def initialize(parent) @parent = parent end |
Instance Attribute Details
#parent ⇒ Conversant::V3::Services::CDN (readonly)
Returns the parent CDN service instance.
28 29 30 |
# File 'lib/conversant/v3/services/cdn/partner/analytics.rb', line 28 def parent @parent end |
Instance Method Details
#bandwidth(payload) ⇒ Hash
Get partner-level bandwidth metrics
Retrieves aggregated bandwidth usage across all customer accounts for the partner within the specified time range.
56 57 58 59 60 61 62 |
# File 'lib/conversant/v3/services/cdn/partner/analytics.rb', line 56 def bandwidth(payload) response = @parent.send(:call, 'POST', '/api/report/bandwidth/partner', payload) JSON.parse(response) rescue StandardError => e @parent.send(:logger).error "#{@parent.send(:identifier)}.METHOD:#{__method__}.EXCEPTION:#{e.}" nil end |
#domain_http_codes(customer_id, payload) ⇒ Hash
Get HTTP status codes for specific domains
Retrieves HTTP status code distribution for specified domains, useful for monitoring error rates and response codes.
206 207 208 209 210 211 212 |
# File 'lib/conversant/v3/services/cdn/partner/analytics.rb', line 206 def domain_http_codes(customer_id, payload) response = @parent.send(:call, 'POST', "/api/report/customers/#{customer_id}/http_codes", payload) JSON.parse(response) rescue StandardError => e @parent.send(:logger).error "#{@parent.send(:identifier)}.METHOD:#{__method__}.EXCEPTION:#{e.}" nil end |
#domain_rps(params) ⇒ Hash
Get request per second for specific domain
220 221 222 223 224 225 226 227 |
# File 'lib/conversant/v3/services/cdn/partner/analytics.rb', line 220 def domain_rps(params) query_string = params.map { |k, v| "#{k}=#{v}" }.join('&') response = @parent.send(:call, 'GET', "/api/rps_chart_data?#{query_string}") JSON.parse(response) rescue StandardError => e @parent.send(:logger).error "#{@parent.send(:identifier)}.METHOD:#{__method__}.EXCEPTION:#{e.}" nil end |
#domain_traffic_usage(payload) ⇒ Hash
Get domain traffic usage for billing purposes
106 107 108 109 110 111 112 |
# File 'lib/conversant/v3/services/cdn/partner/analytics.rb', line 106 def domain_traffic_usage(payload) response = @parent.send(:call, 'POST', '/api/domain_traffic_usage', payload) JSON.parse(response) rescue StandardError => e @parent.send(:logger).error "#{@parent.send(:identifier)}.METHOD:#{__method__}.EXCEPTION:#{e.}" nil end |
#domain_volume(payload) ⇒ Hash
Get volume metrics for a specific domain
175 176 177 178 179 180 181 |
# File 'lib/conversant/v3/services/cdn/partner/analytics.rb', line 175 def domain_volume(payload) response = @parent.send(:call, 'POST', '/api/report/volume', payload) JSON.parse(response) rescue StandardError => e @parent.send(:logger).error "#{@parent.send(:identifier)}.METHOD:#{__method__}.EXCEPTION:#{e.}" nil end |
#request_per_second(params) ⇒ Hash
Get partner-level request per second metrics
87 88 89 90 91 92 93 94 |
# File 'lib/conversant/v3/services/cdn/partner/analytics.rb', line 87 def request_per_second(params) query_string = params.map { |k, v| "#{k}=#{v}" }.join('&') response = @parent.send(:call, 'GET', "/api/rps_chart_data/partner?#{query_string}") JSON.parse(response) rescue StandardError => e @parent.send(:logger).error "#{@parent.send(:identifier)}.METHOD:#{__method__}.EXCEPTION:#{e.}" nil end |
#usages(payload) ⇒ Integer
Get storage usage for a customer
Retrieves the disk usage for the current month or specified month. If no end date is provided in the payload, it defaults to the current date.
149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/conversant/v3/services/cdn/partner/analytics.rb', line 149 def usages(payload) payload = payload&.as_json today = (payload&.[]('end') || Date.current).to_date # puts @parent.inspect response = @parent.send(:call, 'GET', "/api/customers/#{@parent.customer_id}/storage_usages/#{today.year}") JSON.parse(response)&.find do |item| item&.[]('month') == today.month end&.[]('diskUsage') || 0 rescue StandardError => e @parent.send(:logger).error "#{@parent.send(:identifier)}.METHOD:#{__method__}.EXCEPTION:#{e.}" 0 end |
#viewers(payload) ⇒ Hash
Get partner-level viewer metrics
123 124 125 126 127 128 129 |
# File 'lib/conversant/v3/services/cdn/partner/analytics.rb', line 123 def viewers(payload) response = @parent.send(:call, 'POST', '/api/report/viewers/partner', payload) JSON.parse(response) rescue StandardError => e @parent.send(:logger).error "#{@parent.send(:identifier)}.METHOD:#{__method__}.EXCEPTION:#{e.}" nil end |
#volume(payload) ⇒ Hash
Get partner-level volume metrics
73 74 75 76 77 78 79 |
# File 'lib/conversant/v3/services/cdn/partner/analytics.rb', line 73 def volume(payload) response = @parent.send(:call, 'POST', '/api/report/volume/partner', payload) JSON.parse(response) rescue StandardError => e @parent.send(:logger).error "#{@parent.send(:identifier)}.METHOD:#{__method__}.EXCEPTION:#{e.}" nil end |