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:
Bianca Nenciu
2022-11-29 13:07:42 +02:00
committed by GitHub
parent c139767055
commit 3048d3d07d
8 changed files with 187 additions and 5 deletions

View File

@ -100,6 +100,33 @@ RSpec.describe Middleware::RequestTracker do
expect(ApplicationRequest.page_view_crawler.first.count).to eq(1)
end
it "logs API requests correctly" do
data = Middleware::RequestTracker.get_data(
env("_DISCOURSE_API" => "1"), ["200", { "Content-Type" => 'text/json' }], 0.1
)
Middleware::RequestTracker.log_request(data)
data = Middleware::RequestTracker.get_data(
env("_DISCOURSE_API" => "1"), ["404", { "Content-Type" => 'text/json' }], 0.1
)
Middleware::RequestTracker.log_request(data)
data = Middleware::RequestTracker.get_data(
env("_DISCOURSE_USER_API" => "1"), ["200", {}], 0.1
)
Middleware::RequestTracker.log_request(data)
CachedCounting.flush
expect(ApplicationRequest.http_total.first.count).to eq(3)
expect(ApplicationRequest.http_2xx.first.count).to eq(2)
expect(ApplicationRequest.api.first.count).to eq(2)
expect(ApplicationRequest.user_api.first.count).to eq(1)
end
it "can log Discourse user agent requests correctly" do
# log discourse api agents as crawlers for page view stats...
data = Middleware::RequestTracker.get_data(env(