forked from Gitlink/forgeplus
97 lines
3.2 KiB
Ruby
97 lines
3.2 KiB
Ruby
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
|