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
 |