Skip to content
Snippets Groups Projects

Add Get Web hook events API

4 files
+ 92
14
Compare changes
  • Side-by-side
  • Inline
Files
4
+ 45
0
# frozen_string_literal: true
module WebHooks
class WebHookLogsFinder
attr_accessor :hooks, :params, :current_user
def initialize(hook, current_user, params = {})
@hook = hook
@current_user = current_user
@params = params
end
def execute
return WebHookLog.none unless authorized?
items = @hook.web_hook_logs
by_status_code(items)
end
private
def authorized?
Ability.allowed?(current_user, :admin_project, @hook.project)
end
def by_status_code(logs)
return logs unless params[:status]
filters = params[:status].map { |status| string_filter_to_code(status) }
filters.map { |code| logs.by_status_code(code) }.reduce(:or)
end
def string_filter_to_code(status_string)
case status_string
when 'server_failure'
'5'
when 'client_failure'
'4'
else
status_string
end
end
end
end
Loading