ADD gitea pull request api

dev_forge
Jasder 5 years ago
parent d4f15a97c4
commit b667664ed4

@ -15,7 +15,7 @@ class Gitea::ClientService < ApplicationService
# token: {},
# data: {}
# }
def post(url, params)
def post(url, params={})
puts "[gitea] request params: #{params}"
request_url = [api_url, url].join('').freeze
auth_token = authen_params(params[:token])
@ -29,11 +29,10 @@ class Gitea::ClientService < ApplicationService
def get(url, params={})
auth_token = authen_params(params[:token])
response = conn(auth_token).get do |req|
conn(auth_token).get do |req|
req.url full_url(url)
req.body = params[:data].to_json
end
render_status(response)
end
def delete(url, params={})
@ -109,6 +108,8 @@ class Gitea::ClientService < ApplicationService
# return {status: -1, message: result[0]}
raise Error, result[0]
when 204
puts "[gitea] "
raise Error, "[gitea] delete ok"
else
result = JSON.parse(response&.body)

@ -0,0 +1,35 @@
# Check if a pull request has been merged
class Gitea::PullRequest::CheckService < Gitea::ClientService
attr_reader :user, :repo, :pull_request_id
# user: 用户
# repo: 仓库名称/标识
# pull_request_id: pull request主键id
def initialize(user, repo, pull_request_id)
super({token: user.gitea_token})
@user = user
@repo = repo
@pull_request_id = pull_request_id
end
def call
response = get(url, params)
render_response(response)
end
private
def params
Hash.new.merge(token: user.gitea_token)
end
def url
"/repos/#{user.login}/#{repo}/pulls/#{pull_request_id}/merge".freeze
end
def render_response(response)
case response.status
when 204 then true
when 404 then false
end
end
end

@ -0,0 +1,32 @@
# Create a pull request
class Gitea::PullRequest::CreateService < Gitea::ClientService
attr_reader :user, :repo, :params
# params ex:
# {
# title: 'pull request title',
# body: 'pull request content',
# head: 'develop', // from branch 源分支
# base: 'master' // to branch 目标分支
# }
# 以上列子说明从develop分支合并到master分支
# repo: 仓库名称
def initialize(user, repo, params={})
@user = user
@repo = repo
@params = params
end
def call
post(url, request_params)
end
private
def url
"/repos/#{user.login}/#{repo}/pulls".freeze
end
def request_params
Hash.new.merge(token: user.gitea_token, data: params)
end
end

@ -0,0 +1,37 @@
# Get a pull request
class Gitea::PullRequest::GetService < Gitea::ClientService
attr_reader :user, :repo, :pull_request_id
# user: 用户
# repo: 仓库名称/标识
# pull_request_id: pull request主键id
def initialize(user, repo, pull_request_id)
super({token: user.gitea_token})
@user = user
@repo = repo
@pull_request_id = pull_request_id
end
def call
response = get(url, params)
render_result(response)
end
private
def params
Hash.new.merge(token: user.gitea_token)
end
def url
"/repos/#{user.login}/#{repo}/pulls/#{pull_request_id}".freeze
end
def render_result(response)
case response.status
when 200
JSON.parse(response.body)
else
nil
end
end
end

@ -0,0 +1,7 @@
# List a repo's pull requests
class Gitea::PullRequest::ListService < Gitea::ClientService
def url
"/repos/{owner}/{repo}/pulls"
end
end

@ -0,0 +1,42 @@
# Merge a pull request
class Gitea::PullRequest::MergeService < Gitea::ClientService
attr_reader :user, :repo, :pull_request_id, :params
# parameters:
# repo: name of the repo
# pull_request_id: index of the pull request to merge
# params:
# title: merge标题
# message: merge说明
def initialize(user, repo, pull_request_id, params={})
@user = user
@repo = repo
@params = params
@pull_request_id = pull_request_id
end
def call
post(url, request_params)
end
private
def url
"/repos/#{user.login}/#{repo}/pulls/#{pull_request_id}/merge"
end
def request_params
Hash.new.merge(token: user.gitea_token, data: body)
end
def body
# TODO
# 暂时只支持 merge模式
#params Do: Enum [ merge, rebase, rebase-merge, squash ], default merge
body = {
Do: 'merge'
}
body = body.merge(MergeTitleField: params[:title]) if params[:title]
body = body.merge(MergeMessageField: params[:message]) if params[:message]
body
end
end

@ -7,11 +7,11 @@ class Gitea::Repository::GetService < Gitea::ClientService
end
def call
get(url, params)
response = get(url, params)
render_result(response)
end
private
def params
Hash.new.merge(token: user.gitea_token)
end
@ -19,4 +19,13 @@ class Gitea::Repository::GetService < Gitea::ClientService
def url
"/repos/#{user.login}/#{repo_name}".freeze
end
def render_result(response)
case response.status
when 200
JSON.parse(response.body)
else
nil
end
end
end

Loading…
Cancel
Save