forked from Gitlink/forgeplus
59 lines
1.7 KiB
Ruby
59 lines
1.7 KiB
Ruby
class Gitea::PullRequest::CreateService < Gitea::ClientService
|
||
attr_reader :token, :owner, :repo, :params
|
||
|
||
# 同一个项目下发送pr例子,如下:
|
||
# 参数说明:
|
||
# owner: 项目拥有者
|
||
# repo: 项目名称
|
||
# params:
|
||
# {
|
||
# title: 'pull request title',
|
||
# body: 'pull request content',
|
||
# head: 'develop', // from branch 源分支, 格式:branch
|
||
# base: 'master' // to branch 目标分支
|
||
# }
|
||
# 以上列子说明从develop分支合并到master分支
|
||
# Gitea::PullRequest::CreateService.call('token', '项目拥有者', '项目名称', params)
|
||
|
||
# fork的项目,向源项目发送pr例子,如下:
|
||
# 参数说明:
|
||
# owner:源项目拥有者
|
||
# repo:源项目仓库名称
|
||
# params:
|
||
# {
|
||
# "base": "develop", // to branch 目标分支
|
||
# "head": "jasder:master", // from branch 源分支,格式:username:branch
|
||
# "body": "像源项目发送pr",
|
||
# "title": "jasder用户向源项目发送pr"
|
||
# }
|
||
# 以上例子说明:jasder用户fork的项目master分支向源项目的develop分支发送pr
|
||
# Gitea::PullRequest::CreateService.call('token', '源项目拥有者', '源项目名称', params)
|
||
def initialize(token, owner, repo, params={})
|
||
@token = token
|
||
@owner = owner
|
||
@repo = repo
|
||
@params = params
|
||
end
|
||
|
||
def call
|
||
response = post(url, request_params)
|
||
json_format(response)
|
||
end
|
||
|
||
private
|
||
|
||
def url
|
||
"/repos/#{@owner}/#{@repo}/pulls".freeze
|
||
end
|
||
|
||
def request_params
|
||
Hash.new.merge(token: token, data: @params)
|
||
end
|
||
|
||
def json_format(response)
|
||
status, message, body = render_response(response)
|
||
|
||
status === 201 ? success(body) : error(message, status)
|
||
end
|
||
end
|