43 lines
1.3 KiB
Ruby
43 lines
1.3 KiB
Ruby
|
|
require 'db/mongo/models/statistic'
|
||
|
|
require_relative "request_handler"
|
||
|
|
|
||
|
|
module Devops
|
||
|
|
module API3
|
||
|
|
module Handler
|
||
|
|
class Statistic < RequestHandler
|
||
|
|
|
||
|
|
# supported options:
|
||
|
|
# user
|
||
|
|
# response_code (format: 200)
|
||
|
|
# method
|
||
|
|
# path
|
||
|
|
# path_contains
|
||
|
|
# date_from (format: timestamp)
|
||
|
|
# date_till (format: timestamp)
|
||
|
|
# limit: default 20. Zero value is equal to no limit.
|
||
|
|
# sort_field: default 'created_at'. Could also be in [user, path, method, body, response_code, created_at].
|
||
|
|
# sort_order: default 'asc'. Could also be 'desc'
|
||
|
|
def statistic
|
||
|
|
filters = @request.params
|
||
|
|
limit =extract_limit_params_for_searching(20)
|
||
|
|
sort = extract_sort_params_for_searching
|
||
|
|
query = {}
|
||
|
|
%w(user method path).each do |key|
|
||
|
|
val = filters[key]
|
||
|
|
query[key] = val if val
|
||
|
|
end
|
||
|
|
|
||
|
|
query["response_code"] = filters["response_code"].to_i if filters["response_code"]
|
||
|
|
query["path"] = Regexp.new(filters["path_contains"], 'i') if filters["path_contains"]
|
||
|
|
|
||
|
|
fill_date_params_for_searching(query)
|
||
|
|
|
||
|
|
Devops::Model::Statistic.where(query).sort(sort).limit(limit)
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|