mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Track API and user API requests (#19186)
Adds stats for API and user API requests similar to regular page views. This comes with a new report to visualize API requests per day like the consolidated page views one.
This commit is contained in:
40
app/models/concerns/reports/consolidated_api_requests.rb
Normal file
40
app/models/concerns/reports/consolidated_api_requests.rb
Normal file
@@ -0,0 +1,40 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Reports::ConsolidatedApiRequests
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
class_methods do
|
||||
def report_consolidated_api_requests(report)
|
||||
filters = %w[
|
||||
api
|
||||
user_api
|
||||
]
|
||||
|
||||
report.modes = [:stacked_chart]
|
||||
|
||||
tertiary = ColorScheme.hex_for_name('tertiary') || '0088cc'
|
||||
danger = ColorScheme.hex_for_name('danger') || 'e45735'
|
||||
|
||||
requests = filters.map do |filter|
|
||||
color = filter == "api" ? report.rgba_color(tertiary) : report.rgba_color(danger)
|
||||
|
||||
{
|
||||
req: filter,
|
||||
label: I18n.t("reports.consolidated_api_requests.xaxis.#{filter}"),
|
||||
color: color,
|
||||
data: ApplicationRequest.where(req_type: ApplicationRequest.req_types[filter])
|
||||
}
|
||||
end
|
||||
|
||||
requests.each do |request|
|
||||
request[:data] = request[:data].where('date >= ? AND date <= ?', report.start_date, report.end_date)
|
||||
.order(date: :asc)
|
||||
.group(:date)
|
||||
.sum(:count)
|
||||
.map { |date, count| { x: date, y: count } }
|
||||
end
|
||||
|
||||
report.data = requests
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user