class HooksController < ApplicationController before_action :require_login before_action :find_project_with_id before_action :check_user before_action :set_repository def index hooks_response = Gitea::Hooks::ListService.new(@user.gitea_token, @user.login, @repository.try(:identifier)).call if hooks_response.status == 200 lists = JSON.parse(hooks_response.body) @hooks_size = lists.size @hooks = paginate(lists) else normal_status(-1, "出现错误") end end def create #根据gitea的api # hook_params = { # active: true, # type: "gitea", # branch_filter: "", # config: { # content_type: "application/json", # url: "#{EduSetting.get("host_name")}/repositories/#{project.id}/repo_hooks.json", # http_method: "post" # }, # events: ["create", "pull", "push"], # } #根据gitea上hook的字段测试的 # hook_params = { # is_active: params[:is_active] || false, # type: params[:type], # http_method: params[:http_method] || "POST", # content_type: params[:content_type].to_i, # secret: params[:secret], # events: { # push_only: params[:push_only] || false, # 是否为推送事件 # send_everything: params[:send_everything] || false, #是否为所有事件 # choose_events: params[:choose_events] || false, #是否为自定义事件 # branch_filter: params[:branch_filter] || "*", # events: { # create: params[:create] || false, #创建分支/标签 # delete: params[:delete] || false, #删除分支/标签 # fork: params[:fork] || false, #仓库被派生 # issues: params[:issues] || false, #工单 # issue_comment: params[:issue_comment] || false, #评论 # push: params[:push] || false # 推送 # pull_request: params[:pull_request] || false #合并请求 # repository: params[:repository] || false #仓库 # release: params[:release] || false #版本发布 # } # } # } hook_params = params[:hook_params] Gitea::Hooks::CreateService.new(@user, @repository.try(:identifier), hook_params).call #创建gitea的hook功能 Gitea::Hooks::CreateService.new(user, p.try(:identifier), hook_params).call #创建gitea的hook功能 end def update hook_params = params[:hook_params] response = Gitea::Hooks::UpdateService.new(@user, @repository.try(:identifier), hook_params, params[:id]).call if response.status == 200 normal_status(1, "更新成功") else normal_status(-1, "更新失败") end end def destroy response = Gitea::Hooks::DestroyService.new(@user, @repository.try(:identifier), params[:id]).call if response.status == 204 normal_status(1, "删除成功") else normal_status(-1, "删除失败") end end private def set_repository @repository = @project.repository @user = @project.owner normal_status(-1, "仓库不存在") unless @repository.present? normal_status(-1, "用户不存在") unless @user.present? end def check_user unless @project.user_id == current_user.id tip_exception(403, "您没有权限进入") end end end