Skip to content
Snippets Groups Projects

Add Get Web hook events API

Compare and
18 files
+ 931
66
Compare changes
  • Side-by-side
  • Inline
Files
18
+ 50
0
# frozen_string_literal: true
module WebHooks
class WebHookLogsFinder
attr_accessor :hooks, :params, :current_user
def initialize(hook, current_user, entity, params = {})
@hook = hook
@current_user = current_user
@entity = entity
@params = params
end
def execute
return WebHookLog.none unless authorized?(@entity, @hook)
items = @hook.web_hook_logs
by_status_code(items)
end
private
def authorized?(_, hook)
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 'successful'
(200..299)
when 'client_failure'
(400..499)
when 'server_failure'
(500..599)
else
status_string
end
end
end
end
WebHooks::WebHookLogsFinder.prepend_mod
Loading