diff --git a/app/controllers/api/v1/projects/contents_controller.rb b/app/controllers/api/v1/projects/contents_controller.rb new file mode 100644 index 000000000..a4e65051e --- /dev/null +++ b/app/controllers/api/v1/projects/contents_controller.rb @@ -0,0 +1,13 @@ +class Api::V1::Projects::ContentsController < Api::V1::BaseController + before_action :require_operate_above, only: [:batch] + + def batch + @result_object = Api::V1::Projects::Contents::BatchCreateService.call(@project, batch_content_params, current_user&.gitea_token) + puts @result_object + end + + private + def batch_content_params + params.require(:content).permit(:author_email, :author_name, :author_timeunix, :branch, :committer_email, :committer_name, :committer_timeunix, :message, :new_branch, files: [ :action_type, :content, :encoding, :file_path]) + end +end \ No newline at end of file diff --git a/app/docs/slate/source/includes/_repositories.md b/app/docs/slate/source/includes/_repositories.md index 5b5067495..ae74dac7f 100644 --- a/app/docs/slate/source/includes/_repositories.md +++ b/app/docs/slate/source/includes/_repositories.md @@ -1093,6 +1093,138 @@ await octokit.request('GET /api/yystopf/ceshi/files.json') ] ``` +## 提交文件到仓库 +提交文件到仓库,支持批量 + +> 示例: + +```shell +curl -X POST \ +-d "files[][action_type]=create" \ +-d "files[][content]=jfksj" \ +-d "files[][encoding]=text" \ +-d "files[][file_path]=heihei8" \ +-d "author_email=yystopf@163.com" \ +-d "author_name=yystopf" \ +-d "author_timeunix=1658214400" \ +-d "committer_email=yystopf@163.com" \ +-d "committer_name=yystopf" \ +-d "committer_timeunix=1658214400" \ +-d "branch=develop" \ +-d "new_branch=develop_ceshi" \ +-d "message=测试提交" \ +http://localhost:3000/api/v1/yystopf/ceshi/contents/batch.json +``` + +```javascript +await octokit.request('POST /api/v1/yystopf/ceshi/contents/batch.json') +``` + +### HTTP 请求 +`POST /api/v1/:owner/:repo/contents/batch` + +### 请求参数: +参数 | 必选 | 默认 | 类型 | 字段说明 +--------- | ------- | ------- | -------- | ---------- +|owner |是| |string |用户登录名 | +|repo |是| |string |项目标识identifier | +|files.action_type |是| |string|操作类型 create: 创建 update: 更新 delete: 删除| +|files.content |是| |string|文件内容| +|files.encoding |是| |string|文件编码方式 text 文本 base64 加密| +|files.file_path |是| |string|文件路径| +|author_email |是| |string|作者邮箱| +|author_name |是| |string|作者名称| +|author_timeunix |是| |int|编码时间,精确到秒| +|committer_email |是| |string|提交者邮箱| +|committer_name |是| |string|提交者名称| +|committer_timeunix|是| |int|提交时间戳,精确到秒| +|branch |是| |string|提交分支| +|new_branch |否| |string|如果需要创建新分支,这个需要填| +|message |是| |string|提交信息| + +> 请求的JSON示例: + +```json +{ + "files": [ + { + "action_type": "create", + "content": "jfksj", + "encoding": "text", + "file_path": "heihei7" + } + ], + "author_email": "yystopf@163.com", + "author_name": "yystopf", + "author_timeunix": 1658214400, + "committer_email": "yystopf@163.com", + "committer_name": "yystopf", + "committer_timeunix": 1658214400, + "branch": "hh_ceshi", + "message": "测试提交" +} +``` + +### 返回字段说明: +参数 | 类型 | 字段说明 +--------- | ----------- | ----------- +|commit.sha |string |提交ID| +|commit.author |object |作者| +|commit.committer |object |提交者| +|commit.commit_message|string |提交信息| +|commit.parent_shas |array |父节点commit ID| +|commit.authored_time|int |编码时间| +|commit.commited_time|int |提交时间| +|contents.name |string |文件名称| +|contents.path |string |文件路径| +|contents.sha |string |文件标识| +|contents.type |string |文件类型| +|contents.size |int |文件大小| +|contents.url |string |文件地址| +|contents.encoding |string |编码类型 text 文本 base64 加密 | +|contents.content |string |文件内容| + + +> 返回的JSON示例: + +```json +{ + "commit": { + "sha": "7c1e25f9b974e4b7a3816bd7f5e49b441078e999", + "author": { + "id": "2", + "login": "yystopf", + "name": "heh", + "type": "User", + "image_url": "system/lets/letter_avatars/2/H/188_239_142/120.png" + }, + "committer": { + "id": "2", + "login": "yystopf", + "name": "heh", + "type": "User", + "image_url": "system/lets/letter_avatars/2/H/188_239_142/120.png" + }, + "commit_message": "测试提交\n", + "parent_shas": [ + "9aec816d0f3600082ca77893290a14bd29d805fe" + ], + "authored_time": 1658214400, + "commited_time": 1658214400 + }, + "contents": [ + { + "name": "heihei7", + "path": "heihei7", + "sha": "f0acac8efb3021b0f6a7b13b42d033d86e076a4b", + "type": "file", + "size": 5, + "encoding": "base64", + "content": "amZrc2o=" + } + ] +} +``` ## 获取仓库代码目录 获取仓库代码目录 diff --git a/app/services/api/v1/projects/branches/create_service.rb b/app/services/api/v1/projects/branches/create_service.rb index 33e561270..2837dfcf4 100644 --- a/app/services/api/v1/projects/branches/create_service.rb +++ b/app/services/api/v1/projects/branches/create_service.rb @@ -44,7 +44,7 @@ class Api::V1::Projects::Branches::CreateService < ApplicationService end def check_new_branch_exist - result = $gitea_client.get_repos_branch_name_set_by_owner_repo(owner, repo) rescue nil + result = $gitea_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil raise Error, '查询分支名称失败!' unless result.is_a?(Hash) raise Error, '分支已存在!' if result['branch_name'].include?(@new_branch_name) end diff --git a/app/services/api/v1/projects/contents/batch_create_service.rb b/app/services/api/v1/projects/contents/batch_create_service.rb new file mode 100644 index 000000000..d987f9318 --- /dev/null +++ b/app/services/api/v1/projects/contents/batch_create_service.rb @@ -0,0 +1,91 @@ +class Api::V1::Projects::Contents::BatchCreateService < ApplicationService + include ActiveModel::Model + + attr_reader :project, :owner, :repo, :token + attr_reader :files, :author_email, :author_name, :author_timeunix, :branch, :committer_email, :committer_name, :committer_timeunix, :message, :new_branch + attr_accessor :gitea_data + + validates :author_email, :committer_email, presence: true, format: { with: CustomRegexp::EMAIL } + validates :author_name, :committer_name, presence: true, format: { with: /\A(?!_)(?!.*?_$)[a-zA-Z0-9_-]{4,15}\z/ } + validates :author_timeunix, :committer_timeunix, presence: true + validates :branch, presence: true + validates :message, presence: true + + + def initialize(project, params, token=nil) + puts params + @project = project + @owner = project&.owner.login + @repo = project&.identifier + @token = token + @files = params[:files] + @author_email = params[:author_email] + @author_name = params[:author_name] + @author_timeunix = params[:author_timeunix] + @branch = params[:branch] + @committer_email = params[:committer_email] + @committer_name = params[:committer_name] + @committer_timeunix = params[:committer_timeunix] + @message = params[:message] + @new_branch = params[:new_branch] + end + + def call + raise Error, '请输入正确的文件参数Files' unless valid_files? + raise Error, errors.full_messages.join(", ") unless valid? + check_branch_exist + excute_data_to_gitea + + gitea_data + end + + private + def request_params + { + access_token: token + } + end + + def request_body + { + files: files, + header: { + author: { + email: author_email, + name: author_name + }, + committer: { + email: committer_email, + name: committer_name + }, + dates: { + author: Time.at(author_timeunix.to_i), + committer: Time.at(committer_timeunix.to_i) + }, + message: message, + new_branch: new_branch, + signoff: false + } + } + end + + def valid_files? + return false unless files.is_a?(Array) && !files.blank? + files.each do |file| + return false unless file.has_key?(:action_type) && file.has_key?(:content) && file.has_key?(:encoding) && file.has_key?(:file_path) + end + end + + def excute_data_to_gitea + @gitea_data = $gitea_client.post_repos_contents_batch_by_owner_repo(owner, repo, {body: request_body.to_json, query: request_params}) rescue nil + raise Error, '创建文件失败!' unless @gitea_data.is_a?(Hash) + end + + def check_branch_exist + result = $gitea_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params} ) rescue nil + raise Error, '查询分支名称失败!' unless result.is_a?(Hash) + raise Error, '分支不存在!' unless result['branch_name'].include?(branch) + raise Error, '分支已存在!' if result['branch_name'].include?(new_branch) && new_branch.nil? + end + +end \ No newline at end of file diff --git a/app/views/api/v1/projects/blame.json.jbuilder b/app/views/api/v1/projects/blame.json.jbuilder index d2e689537..8dfa6c8a4 100644 --- a/app/views/api/v1/projects/blame.json.jbuilder +++ b/app/views/api/v1/projects/blame.json.jbuilder @@ -12,9 +12,9 @@ json.blame_parts @result_object['blame_parts'] do |part| json.partial! 'api/v1/users/commit_user', locals: { user: render_cache_commit_author(part['commit']['commiter']), name: part['commit']['commiter']['Name'] } end json.commit_message part['commit']['commit_message'] - json.authored_time part['commit']['authored_time'].to_time.strftime("%Y-%m-%d %H:%M:%S") - json.committed_time part['commit']['committed_time'].to_time.strftime("%Y-%m-%d %H:%M:%S") - json.created_time part['commit']['created_time'].to_time.strftime("%Y-%m-%d %H:%M:%S") + json.authored_time render_unix_time(part['commit']['authored_time']) + json.committed_time render_unix_time(part['commit']['committed_time']) + json.created_time render_unix_time(part['commit']['created_time']) end json.current_number part['current_number'] json.effect_line part['effect_line'] diff --git a/app/views/api/v1/projects/commits/_simple_gitea_detail.json.jbuilder b/app/views/api/v1/projects/commits/_simple_gitea_detail.json.jbuilder new file mode 100644 index 000000000..36e3cc160 --- /dev/null +++ b/app/views/api/v1/projects/commits/_simple_gitea_detail.json.jbuilder @@ -0,0 +1,10 @@ +json.sha commit['sha'] +json.author do + json.partial! 'api/v1/users/commit_user', locals: { user: render_cache_commit_author(commit['author']), name: commit['author']['name'] } +end + +json.committer do + json.partial! 'api/v1/users/commit_user', locals: { user: render_cache_commit_author(commit['committer']), name: commit['committer']['name'] } +end +json.commit_message commit['message'] +json.parent_shas commit['parents'].map{|x|x['sha']} \ No newline at end of file diff --git a/app/views/api/v1/projects/commits/index.json.jbuilder b/app/views/api/v1/projects/commits/index.json.jbuilder index aa13845a1..bd085535c 100644 --- a/app/views/api/v1/projects/commits/index.json.jbuilder +++ b/app/views/api/v1/projects/commits/index.json.jbuilder @@ -12,6 +12,6 @@ json.commits @result_object[:data].each do |commit| json.parent_shas commit['parents'].map{|x|x['sha']} json.files commit['files'].map{|f|f['filename']} json.commit_date commit['commit_date'] - json.commit_time commit['commit']['committer']['date'].to_time.strftime("%Y-%m-%d %H:%M:%S") + json.commit_time render_unix_time(commit['commit']['committer']['date']) json.branch commit['branch'] end \ No newline at end of file diff --git a/app/views/api/v1/projects/contents/batch.json.jbuilder b/app/views/api/v1/projects/contents/batch.json.jbuilder new file mode 100644 index 000000000..a9ef08fa6 --- /dev/null +++ b/app/views/api/v1/projects/contents/batch.json.jbuilder @@ -0,0 +1,14 @@ +json.commit do + json.partial! "api/v1/projects/commits/simple_gitea_detail", commit: @result_object['commit'] + json.authored_time render_unix_time(@result_object['commit']['author']['date']) + json.commited_time render_unix_time(@result_object['commit']['committer']['date']) +end +json.contents @result_object['contents'].each do |content| + json.name content['name'] + json.path content['path'] + json.sha content['sha'] + json.type content['type'] + json.size content['size'] + json.encoding content['encoding'] + json.content content['content'] +end \ No newline at end of file diff --git a/config/routes/api.rb b/config/routes/api.rb index 6a01d1aba..81668804e 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -37,6 +37,12 @@ defaults format: :json do get '/commits/:sha/diff', to: 'commits#diff' get '/git/blobs/:sha', to: 'git#blobs' get '/git/trees/:sha', to: 'git#trees' + + resources :contents, only: [:index] do + collection do + post :batch + end + end end end diff --git a/public/docs/api.html b/public/docs/api.html index 0fcb033ae..52e114d72 100644 --- a/public/docs/api.html +++ b/public/docs/api.html @@ -538,6 +538,9 @@
  • 获取仓库所有文件
  • +
  • + 提交文件到仓库 +
  • 获取仓库代码目录
  • @@ -9056,6 +9059,292 @@ http://localhost:3000/api/yystopf/ceshi/files.json "html_url": "http://localhost:10080/yystopf/ceshi/src/branch/master/README.md" } ] +

    提交文件到仓库

    +

    提交文件到仓库,支持批量

    + +
    +

    示例:

    +
    +
    curl -X POST \
    +-d "files[][action_type]=create" \
    +-d "files[][content]=jfksj" \
    +-d "files[][encoding]=text" \
    +-d "files[][file_path]=heihei8" \
    +-d "author_email=yystopf@163.com" \
    +-d "author_name=yystopf" \
    +-d "author_timeunix=1658214400" \
    +-d "committer_email=yystopf@163.com" \
    +-d "committer_name=yystopf" \
    +-d "committer_timeunix=1658214400" \
    +-d "branch=develop" \
    +-d "new_branch=develop_ceshi" \
    +-d "message=测试提交" \
    +http://localhost:3000/api/v1/yystopf/ceshi/contents/batch.json
    +
    await octokit.request('POST /api/v1/yystopf/ceshi/contents/batch.json')
    +

    HTTP 请求

    +

    POST /api/v1/:owner/:repo/contents/batch

    +

    请求参数:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    参数必选默认类型字段说明
    ownerstring用户登录名
    repostring项目标识identifier
    files.action_typestring操作类型 create: 创建 update: 更新 delete: 删除
    files.contentstring文件内容
    files.encodingstring文件编码方式 text 文本 base64 加密
    files.file_pathstring文件路径
    author_emailstring作者邮箱
    author_namestring作者名称
    author_timeunixint编码时间,精确到秒
    committer_emailstring提交者邮箱
    committer_namestring提交者名称
    committer_timeunixint提交时间戳,精确到秒
    branchstring提交分支
    new_branchstring如果需要创建新分支,这个需要填
    messagestring提交信息
    + +
    +

    请求的JSON示例:

    +
    +
    {
    +    "files": [
    +        {
    +            "action_type": "create",
    +            "content": "jfksj",
    +            "encoding": "text",
    +            "file_path": "heihei7"
    +        }
    +    ],
    +    "author_email": "yystopf@163.com",
    +    "author_name": "yystopf",
    +    "author_timeunix": 1658214400,
    +    "committer_email": "yystopf@163.com",
    +    "committer_name": "yystopf",
    +    "committer_timeunix": 1658214400,
    +    "branch": "hh_ceshi",
    +    "message": "测试提交"
    +}
    +

    返回字段说明:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    参数类型字段说明
    commit.shastring提交ID
    commit.authorobject作者
    commit.committerobject提交者
    commit.commit_messagestring提交信息
    commit.parent_shasarray父节点commit ID
    commit.authored_timeint编码时间
    commit.commited_timeint提交时间
    contents.namestring文件名称
    contents.pathstring文件路径
    contents.shastring文件标识
    contents.typestring文件类型
    contents.sizeint文件大小
    contents.urlstring文件地址
    contents.encodingstring编码类型 text 文本 base64 加密
    contents.contentstring文件内容
    + +
    +

    返回的JSON示例:

    +
    +
    {
    +    "commit": {
    +        "sha": "7c1e25f9b974e4b7a3816bd7f5e49b441078e999",
    +        "author": {
    +            "id": "2",
    +            "login": "yystopf",
    +            "name": "heh",
    +            "type": "User",
    +            "image_url": "system/lets/letter_avatars/2/H/188_239_142/120.png"
    +        },
    +        "committer": {
    +            "id": "2",
    +            "login": "yystopf",
    +            "name": "heh",
    +            "type": "User",
    +            "image_url": "system/lets/letter_avatars/2/H/188_239_142/120.png"
    +        },
    +        "commit_message": "测试提交\n",
    +        "parent_shas": [
    +            "9aec816d0f3600082ca77893290a14bd29d805fe"
    +        ],
    +        "authored_time": 1658214400,
    +        "commited_time": 1658214400
    +    },
    +    "contents": [
    +        {
    +            "name": "heihei7",
    +            "path": "heihei7",
    +            "sha": "f0acac8efb3021b0f6a7b13b42d033d86e076a4b",
    +            "type": "file",
    +            "size": 5,
    +            "encoding": "base64",
    +            "content": "amZrc2o="
    +        }
    +    ]
    +}
     

    获取仓库代码目录

    获取仓库代码目录

    @@ -9066,9 +9355,9 @@ http://localhost:3000/api/yystopf/ceshi/files.json -d "ref=develop" \ http://localhost:3000//api/jasder/jasder_test/entries.json
    await octokit.request('GET /api/jasder/jasder_test/entries.json')
    -

    HTTP 请求

    +

    HTTP 请求

    GET /api/:owner/:repo/entries.json

    -

    请求参数:

    +

    请求参数:

    @@ -9100,7 +9389,7 @@ http://localhost:3000//api/jasder/jasder_test/entries.json
    参数分支名称、tag名称或是提交记录id,默认为master分支
    -

    返回字段说明:

    +

    返回字段说明:

    @@ -9214,9 +9503,9 @@ http://localhost:3000//api/jasder/jasder_test/entries.json -d"filepath=file"\ http://localhost:3000//api/jasder/jasder_test/sub_entries.json
    await octokit.request('GET /api/jasder/jasder_test/sub_entries.json')
    -

    HTTP 请求

    +

    HTTP 请求

    GET /api/:owner/:repo/sub_entries.json

    -

    请求参数:

    +

    请求参数:

    参数
    @@ -9255,7 +9544,7 @@ http://localhost:3000//api/jasder/jasder_test/sub_entries.json
    参数分支名称、tag名称或是提交记录id,默认为master分支
    -

    返回字段说明:

    +

    返回字段说明:

    @@ -9352,9 +9641,9 @@ http://localhost:3000//api/jasder/jasder_test/sub_entries.json -d"filepath=lib"\ http://localhost:3000/api/yystopf/csfjkkj/readme.json
    await octokit.request('GET /api/yystopf/csfjkkj/readme.json')
    -

    HTTP 请求

    +

    HTTP 请求

    GET /api/:owner/:repo/readme.json

    -

    请求参数:

    +

    请求参数:

    参数
    @@ -9393,7 +9682,7 @@ http://localhost:3000/api/yystopf/csfjkkj/readme.json
    参数子目录名称,默认为空
    -

    返回字段说明:

    +

    返回字段说明:

    @@ -9466,9 +9755,9 @@ http://localhost:3000/api/yystopf/csfjkkj/readme.json -d"limit=1"\ http://localhost:3000/api/v1/yystopf/csfjkkj/git/trees/80dd40214a58622312393b2ae693756a4781fab2.json
    await octokit.request('GET /api/v1/yystopf/csfjkkj/git/trees/80dd40214a58622312393b2ae693756a4781fab2.json')
    -

    HTTP 请求

    +

    HTTP 请求

    GET /api/v1/:owner/:repo/git/trees/:sha.json

    -

    请求参数:

    +

    请求参数:

    参数
    @@ -9521,7 +9810,7 @@ http://localhost:3000/api/v1/yystopf/csfjkkj/git/trees/80dd40214a58622312393b2ae
    参数分页个数
    -

    返回字段说明:

    +

    返回字段说明:

    @@ -9594,9 +9883,9 @@ http://localhost:3000/api/v1/yystopf/csfjkkj/git/trees/80dd40214a58622312393b2ae
    curl -X GET http://localhost:3000/api/v1/yystopf/csfjkkj/git/blobs/80dd40214a58622312393b2ae693756a4781fab2.json
     
    await octokit.request('GET /api/v1/yystopf/csfjkkj/git/blobs/80dd40214a58622312393b2ae693756a4781fab2.json')
    -

    HTTP 请求

    +

    HTTP 请求

    GET /api/v1/:owner/:repo/git/blobs/:sha.json

    -

    请求参数:

    +

    请求参数:

    参数
    @@ -9628,7 +9917,7 @@ http://localhost:3000/api/v1/yystopf/csfjkkj/git/trees/80dd40214a58622312393b2ae
    参数提交记录id
    -

    返回字段说明:

    +

    返回字段说明:

    @@ -9683,9 +9972,9 @@ http://localhost:3000/api/v1/yystopf/csfjkkj/git/trees/80dd40214a58622312393b2ae -d"limit=1"\ http://localhost:3000/api/v1/yystopf/csfjkkj/commits.json
    await octokit.request('GET /api/v1/yystopf/csfjkkj/commits.json')
    -

    HTTP 请求

    +

    HTTP 请求

    GET /api/v1/:owner/:repo/commits.json

    -

    请求参数:

    +

    请求参数:

    参数
    @@ -9731,7 +10020,7 @@ http://localhost:3000/api/v1/yystopf/csfjkkj/commits.json
    参数每页数量
    -

    返回字段说明:

    +

    返回字段说明:

    @@ -9838,9 +10127,9 @@ http://localhost:3000/api/v1/yystopf/csfjkkj/commits.json
    curl -X GET http://localhost:3000/api/v1/yystopf/csfjkkj/commits/80dd40214a58622312393b2ae693756a4781fab2/diff.json
     
    await octokit.request('GET /api/v1/yystopf/csfjkkj/commits/80dd40214a58622312393b2ae693756a4781fab2/diff.json')
    -

    HTTP 请求

    +

    HTTP 请求

    GET /api/v1/:owner/:repo/commits/:sha/diff.json

    -

    请求参数:

    +

    请求参数:

    参数
    @@ -9872,7 +10161,7 @@ http://localhost:3000/api/v1/yystopf/csfjkkj/commits.json
    参数提交记录id
    -

    返回字段说明:

    +

    返回字段说明:

    @@ -10098,9 +10387,9 @@ http://localhost:3000/api/v1/yystopf/csfjkkj/commits.json -d"filepath=hd.txt"\ http://localhost:3000/api/v1/yystopf/csfjkkj/blame.json
    await octokit.request('GET /api/v1/yystopf/csfjkkj/blame.json')
    -

    HTTP 请求

    +

    HTTP 请求

    GET /api/v1/:owner/:repo/blame.json

    -

    请求参数:

    +

    请求参数:

    参数
    @@ -10139,7 +10428,7 @@ http://localhost:3000/api/v1/yystopf/csfjkkj/blame.json
    参数文件路径
    -

    返回字段说明:

    +

    返回字段说明:

    @@ -10355,9 +10644,9 @@ http://localhost:3000/api/v1/yystopf/csfjkkj/blame.json -d"to=master"\ http://localhost:3000/api/v1/yystopf/csfjkkj/compare.json
    await octokit.request('GET /api/v1/yystopf/csfjkkj/compare.json')
    -

    HTTP 请求

    +

    HTTP 请求

    GET /api/v1/:owner/:repo/compare.json

    -

    请求参数:

    +

    请求参数:

    参数
    @@ -10396,7 +10685,7 @@ http://localhost:3000/api/v1/yystopf/csfjkkj/compare.json
    参数目标分支、标签、commitID
    -

    返回字段说明:

    +

    返回字段说明:

    @@ -10681,9 +10970,9 @@ http://localhost:3000/api/v1/yystopf/csfjkkj/compare.json
    curl -X GET \
     http://localhost:3000/api/v1/yystopf/ceshi/webhooks.json
     
    await octokit.request('GET /api/v1/yystopf/ceshi/webhooks.json')
    -

    HTTP 请求

    +

    HTTP 请求

    GET /api/v1/:owner/:repo/webhooks.json

    -

    请求参数:

    +

    请求参数:

    参数
    @@ -10708,7 +10997,7 @@ http://localhost:3000/api/v1/yystopf/ceshi/webhooks.json
    参数项目标识identifier
    -

    返回字段说明:

    +

    返回字段说明:

    @@ -10801,9 +11090,9 @@ http://localhost:3000/api/v1/yystopf/ceshi/webhooks.json
    curl -X GET \
     http://localhost:3000/api/v1/yystopf/ceshi/webhooks/3.json
     
    await octokit.request('GET /api/v1/yystopf/ceshi/webhooks/3.json')
    -

    HTTP 请求

    +

    HTTP 请求

    GET /api/v1/:owner/:repo/webhooks/:id.json

    -

    请求参数:

    +

    请求参数:

    参数
    @@ -10835,7 +11124,7 @@ http://localhost:3000/api/v1/yystopf/ceshi/webhooks/3.json
    参数webhook ID
    -

    返回字段说明:

    +

    返回字段说明:

    @@ -10958,214 +11247,8 @@ http://localhost:3000/api/v1/yystopf/ceshi/webhooks/3.json
    curl -X POST \
     http://localhost:3000/api/v1/yystopf/ceshi/webhooks.json
     
    await octokit.request('POST /api/v1/yystopf/ceshi/webhooks.json')
    -

    HTTP 请求

    -

    POST /api/v1/:owner/:repo/webhooks.json

    -

    请求参数:

    -
    参数
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    参数必选默认类型字段说明
    ownerstring用户登录名
    repostring项目标识identifier
    webhook.urlstring目标url
    webhook.http_methodstringhttp方法, POST和GET
    webhook.content_typestringPOST Content Type
    webhook.secretstring密钥文本
    webhook.activebool是否激活
    webhook.branch_filterstring分支过滤
    webhook.eventsarray触发事件
    - -

    触发事件字段说明

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    参数含义
    create创建分支或标签
    delete分支或标签删除
    pushgit仓库推送
    pull_request合并请求
    pull_request_assign合并请求被指派
    pull_request_review_approved合并请求被批准
    pull_request_review_rejected合并请求被拒绝
    - -
    -

    请求的JSON示例:

    -
    -
    {
    -    "active": true, 
    -    "content_type": "json",
    -    "http_method": "GET",
    -    "secret": "123456",
    -    "url": "http://localhost:10000",
    -    "branch_filter": "*",
    -    "events": ["push"]
    -}
    -

    返回字段说明:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    参数类型字段说明
    idintid
    urlstring地址
    content_typestringPOST Content Type
    is_activebool是否激活
    typestring类型
    eventsarray触发事件
    create_timestring创建时间
    - -
    -

    返回的JSON示例:

    -
    -
    {
    -    "id": 68,
    -    "content_type": "json",
    -    "http_method": "GET",
    -    "url": "http://127.0.0.1:3000",
    -    "events": [
    -        "create",
    -        "delete",
    -        "push",
    -        "pull_request",
    -        "pull_request_assign",
    -        "pull_request_review_approved",
    -        "pull_request_review_rejected"
    -    ],
    -    "active": true,
    -    "branch_filter": "*",
    -    "created_at": "2022-06-23 15:52"
    -}
    -
    - -

    更新仓库webhook

    -

    更新仓库webhook

    - -
    -

    示例:

    -
    -
    curl -X PATCH \
    -http://localhost:3000/api/v1/yystopf/ceshi/webhooks/7.json
    -
    await octokit.request('PATCH /api/v1/yystopf/ceshi/webhooks/7.json')
     

    HTTP 请求

    -

    PATCH /api/v1/:owner/:repo/webhooks/68.json

    +

    POST /api/v1/:owner/:repo/webhooks.json

    请求参数:

    @@ -11191,13 +11274,6 @@ http://localhost:3000/api/v1/yystopf/ceshi/webhooks/7.json - - - - - - - @@ -11299,6 +11375,219 @@ http://localhost:3000/api/v1/yystopf/ceshi/webhooks/7.json "events": ["push"] }

    返回字段说明:

    +
    项目标识identifier
    idstringwebhook id
    webhook.url
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    参数类型字段说明
    idintid
    urlstring地址
    content_typestringPOST Content Type
    is_activebool是否激活
    typestring类型
    eventsarray触发事件
    create_timestring创建时间
    + +
    +

    返回的JSON示例:

    +
    +
    {
    +    "id": 68,
    +    "content_type": "json",
    +    "http_method": "GET",
    +    "url": "http://127.0.0.1:3000",
    +    "events": [
    +        "create",
    +        "delete",
    +        "push",
    +        "pull_request",
    +        "pull_request_assign",
    +        "pull_request_review_approved",
    +        "pull_request_review_rejected"
    +    ],
    +    "active": true,
    +    "branch_filter": "*",
    +    "created_at": "2022-06-23 15:52"
    +}
    +
    + +

    更新仓库webhook

    +

    更新仓库webhook

    + +
    +

    示例:

    +
    +
    curl -X PATCH \
    +http://localhost:3000/api/v1/yystopf/ceshi/webhooks/7.json
    +
    await octokit.request('PATCH /api/v1/yystopf/ceshi/webhooks/7.json')
    +

    HTTP 请求

    +

    PATCH /api/v1/:owner/:repo/webhooks/68.json

    +

    请求参数:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    参数必选默认类型字段说明
    ownerstring用户登录名
    repostring项目标识identifier
    idstringwebhook id
    webhook.urlstring目标url
    webhook.http_methodstringhttp方法, POST和GET
    webhook.content_typestringPOST Content Type
    webhook.secretstring密钥文本
    webhook.activebool是否激活
    webhook.branch_filterstring分支过滤
    webhook.eventsarray触发事件
    + +

    触发事件字段说明

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    参数含义
    create创建分支或标签
    delete分支或标签删除
    pushgit仓库推送
    pull_request合并请求
    pull_request_assign合并请求被指派
    pull_request_review_approved合并请求被批准
    pull_request_review_rejected合并请求被拒绝
    + +
    +

    请求的JSON示例:

    +
    +
    {
    +    "active": true, 
    +    "content_type": "json",
    +    "http_method": "GET",
    +    "secret": "123456",
    +    "url": "http://localhost:10000",
    +    "branch_filter": "*",
    +    "events": ["push"]
    +}
    +

    返回字段说明:

    返回的JSON示例:

    @@ -11333,9 +11622,9 @@ http://localhost:3000/api/v1/yystopf/ceshi/webhooks/7.json
    curl -X DELETE \
     http://localhost:3000/api/v1/yystopf/ceshi/webhooks/7.json
     
    await octokit.request('DELETE /api/v1/yystopf/ceshi/webhooks/7.json')
    -

    HTTP 请求

    +

    HTTP 请求

    DELETE /api/v1/:owner/:repo/webhooks/:id.json

    -

    请求参数:

    +

    请求参数:

    @@ -11367,7 +11656,7 @@ http://localhost:3000/api/v1/yystopf/ceshi/webhooks/7.json
    参数webhook id
    -

    返回字段说明:

    +

    返回字段说明:

    返回的JSON示例:

    @@ -11388,9 +11677,9 @@ http://localhost:3000/api/v1/yystopf/ceshi/webhooks/7.json
    curl -X GET \
     http://localhost:3000/api/v1/yystopf/ceshi/webhooks/3/hooktasks.json
     
    await octokit.request('GET /api/v1/yystopf/ceshi/webhooks/3/hooktasks.json')
    -

    HTTP 请求

    +

    HTTP 请求

    GET /api/v1/:owner/:repo/webhooks/:id/hooktasks.json

    -

    请求参数:

    +

    请求参数:

    @@ -11422,7 +11711,7 @@ http://localhost:3000/api/v1/yystopf/ceshi/webhooks/3/hooktasks.json
    参数webhook ID
    -

    返回字段说明:

    +

    返回字段说明:

    @@ -11659,9 +11948,9 @@ http://localhost:3000/api/v1/yystopf/ceshi/webhooks/3/hooktasks.json
    curl -X POST \
     http://localhost:3000/api/v1/yystopf/ceshi/webhooks/3/tests.json
     
    await octokit.request('POST /api/v1/yystopf/ceshi/webhooks/3/tests.json')
    -

    HTTP 请求

    +

    HTTP 请求

    POST /api/v1/:owner/:repo/webhooks/:id/tests.json

    -

    请求参数:

    +

    请求参数:

    参数
    @@ -11693,7 +11982,7 @@ http://localhost:3000/api/v1/yystopf/ceshi/webhooks/3/tests.json
    参数webhook ID
    -

    返回字段说明:

    +

    返回字段说明:

    返回的JSON示例: