mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-11 15:25:56 +08:00
init project
This commit is contained in:
22
app/services/gitea/repository/branches_service.rb
Normal file
22
app/services/gitea/repository/branches_service.rb
Normal file
@@ -0,0 +1,22 @@
|
||||
class Gitea::Repository::BranchesService < Gitea::ClientService
|
||||
attr_reader :user, :repo
|
||||
|
||||
def initialize(user, repo)
|
||||
@user = user
|
||||
@repo = repo
|
||||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
render_data(response)
|
||||
end
|
||||
|
||||
private
|
||||
def params
|
||||
Hash.new.merge(token: user.gitea_token)
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/#{user.login}/#{repo}/branches".freeze
|
||||
end
|
||||
end
|
||||
35
app/services/gitea/repository/commits/get_service.rb
Normal file
35
app/services/gitea/repository/commits/get_service.rb
Normal file
@@ -0,0 +1,35 @@
|
||||
# Get a single commit from a repository
|
||||
class Gitea::Repository::Commits::GetService < Gitea::ClientService
|
||||
attr_reader :user, :repo_name, :sha
|
||||
|
||||
# sha: the commit hash
|
||||
def initialize(user, repo_name, sha)
|
||||
@user = user
|
||||
@sha = sha
|
||||
@repo_name = repo_name
|
||||
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_name}/git/commits/#{sha}".freeze
|
||||
end
|
||||
|
||||
def render_result(response)
|
||||
body = JSON.parse(response.body)
|
||||
case response.status
|
||||
when 200
|
||||
JSON.parse(response.body)
|
||||
else
|
||||
{status: -1, message: "#{body['message']}"}
|
||||
end
|
||||
end
|
||||
end
|
||||
39
app/services/gitea/repository/commits/list_service.rb
Normal file
39
app/services/gitea/repository/commits/list_service.rb
Normal file
@@ -0,0 +1,39 @@
|
||||
# Get a list of all commits from a repository
|
||||
class Gitea::Repository::Commits::ListService < Gitea::ClientService
|
||||
attr_reader :user, :repo_name, :args
|
||||
|
||||
# sha: SHA or branch to start listing commits from (usually 'master')
|
||||
def initialize(user, repo_name, **args)
|
||||
@user = user
|
||||
@repo_name = repo_name
|
||||
@args = { sha: 'master', page: 1 }.merge(args.compact)
|
||||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
render_result(response)
|
||||
end
|
||||
|
||||
private
|
||||
def params
|
||||
@args.merge(token: user.gitea_token)
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/#{user.login}/#{repo_name}/commits".freeze
|
||||
end
|
||||
|
||||
def render_result(response)
|
||||
body = JSON.parse(response.body)
|
||||
case response.status
|
||||
when 200
|
||||
result = {}
|
||||
headers = response.headers.to_hash
|
||||
body = JSON.parse(response.body)
|
||||
total_count = headers["x-total"]
|
||||
result.merge(total_count: total_count.to_i, body: body)
|
||||
else
|
||||
{status: -1, message: "#{body['message']}"}
|
||||
end
|
||||
end
|
||||
end
|
||||
34
app/services/gitea/repository/create_service.rb
Normal file
34
app/services/gitea/repository/create_service.rb
Normal file
@@ -0,0 +1,34 @@
|
||||
class Gitea::Repository::CreateService < Gitea::ClientService
|
||||
attr_reader :token, :params
|
||||
|
||||
# params EX:
|
||||
# {
|
||||
# "auto_init": true,
|
||||
# "description": "string",
|
||||
# "gitignores": "string",
|
||||
# "issue_labels": "string",
|
||||
# "license": "string",
|
||||
# "name": "string", *
|
||||
# "private": true,
|
||||
# "readme": "string"
|
||||
# }
|
||||
def initialize(token, params)
|
||||
@token = token
|
||||
@params = params
|
||||
end
|
||||
|
||||
def call
|
||||
post(url, request_params)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def request_params
|
||||
Hash.new.merge(token: token, data: params)
|
||||
end
|
||||
|
||||
def url
|
||||
"/user/repos".freeze
|
||||
end
|
||||
|
||||
end
|
||||
22
app/services/gitea/repository/delete_service.rb
Normal file
22
app/services/gitea/repository/delete_service.rb
Normal file
@@ -0,0 +1,22 @@
|
||||
class Gitea::Repository::DeleteService < Gitea::ClientService
|
||||
attr_reader :user, :repo_name
|
||||
|
||||
def initialize(user, repo_name)
|
||||
@user = user
|
||||
@repo_name = repo_name
|
||||
end
|
||||
|
||||
def call
|
||||
delete(url, params)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def params
|
||||
Hash.new.merge(token: user.gitea_token)
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/#{user.login}/#{repo_name}".freeze
|
||||
end
|
||||
end
|
||||
43
app/services/gitea/repository/entries/create_service.rb
Normal file
43
app/services/gitea/repository/entries/create_service.rb
Normal file
@@ -0,0 +1,43 @@
|
||||
class Gitea::Repository::Entries::CreateService < Gitea::ClientService
|
||||
attr_reader :user, :repo_name, :filepath, :body
|
||||
|
||||
# ref: The name of the commit/branch/tag. Default the repository’s default branch (usually master)
|
||||
# filepath: path of the dir, file, symlink or submodule in the repo
|
||||
# repo_name: the name of repository
|
||||
# body:
|
||||
# {
|
||||
# "author": {
|
||||
# "email": "user@example.com",
|
||||
# "name": "string"
|
||||
# },
|
||||
# "branch": "string",
|
||||
# "committer": {
|
||||
# "email": "user@example.com",
|
||||
# "name": "string"
|
||||
# },
|
||||
# "content": "string", # content must be base64 encoded
|
||||
# "message": "string",
|
||||
# "new_branch": "string"
|
||||
# }
|
||||
#
|
||||
def initialize(user, repo_name, filepath, body)
|
||||
@user = user
|
||||
@repo_name = repo_name
|
||||
@filepath = filepath
|
||||
@body = body
|
||||
end
|
||||
|
||||
def call
|
||||
post(url, params)
|
||||
end
|
||||
|
||||
private
|
||||
def params
|
||||
Hash.new.merge(token: user.gitea_token, data: body)
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/#{user.login}/#{repo_name}/contents/#{filepath}".freeze
|
||||
end
|
||||
|
||||
end
|
||||
42
app/services/gitea/repository/entries/delete_service.rb
Normal file
42
app/services/gitea/repository/entries/delete_service.rb
Normal file
@@ -0,0 +1,42 @@
|
||||
class Gitea::Repository::Entries::DeleteService < Gitea::ClientService
|
||||
attr_reader :user, :repo_name, :filepath, :body
|
||||
|
||||
# ref: The name of the commit/branch/tag. Default the repository’s default branch (usually master)
|
||||
# filepath: path of the dir, file, symlink or submodule in the repo
|
||||
# repo_name: the name of repository
|
||||
# body:
|
||||
# {
|
||||
# "author": {
|
||||
# "email": "user@example.com",
|
||||
# "name": "string"
|
||||
# },
|
||||
# "branch": "string",
|
||||
# "committer": {
|
||||
# "email": "user@example.com",
|
||||
# "name": "string"
|
||||
# },
|
||||
# "message": "string",
|
||||
# "new_branch": "string",
|
||||
# "sha": "string", #require
|
||||
# }
|
||||
def initialize(user, repo_name, filepath, body)
|
||||
@user = user
|
||||
@repo_name = repo_name
|
||||
@filepath = filepath
|
||||
@body = body
|
||||
end
|
||||
|
||||
def call
|
||||
delete(url, params)
|
||||
end
|
||||
|
||||
private
|
||||
def params
|
||||
Hash.new.merge(token: user.gitea_token, data: body)
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/#{user.login}/#{repo_name}/contents/#{filepath}".freeze
|
||||
end
|
||||
|
||||
end
|
||||
38
app/services/gitea/repository/entries/get_service.rb
Normal file
38
app/services/gitea/repository/entries/get_service.rb
Normal file
@@ -0,0 +1,38 @@
|
||||
class Gitea::Repository::Entries::GetService < Gitea::ClientService
|
||||
attr_reader :user, :repo_name, :filepath, :args
|
||||
|
||||
# ref: The name of the commit/branch/tag. Default the repository’s default branch (usually master)
|
||||
# filepath: path of the dir, file, symlink or submodule in the repo
|
||||
# repo_name: the name of repository
|
||||
# ref: The name of the commit/branch/tag. Default the repository’s default branch (usually master)
|
||||
def initialize(user, repo_name, filepath, **args)
|
||||
@user = user
|
||||
@repo_name = repo_name
|
||||
@filepath = filepath
|
||||
@args = {ref: 'master'}.merge(args.compact)
|
||||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
render_result(response)
|
||||
end
|
||||
|
||||
private
|
||||
def params
|
||||
@args.merge(token: user.gitea_token)
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/#{user.login}/#{repo_name}/contents/#{filepath}".freeze
|
||||
end
|
||||
|
||||
def render_result(response)
|
||||
body = JSON.parse(response.body)
|
||||
case response.status
|
||||
when 200
|
||||
body
|
||||
else
|
||||
{status: -1, message: "#{body['message']}"}
|
||||
end
|
||||
end
|
||||
end
|
||||
35
app/services/gitea/repository/entries/list_service.rb
Normal file
35
app/services/gitea/repository/entries/list_service.rb
Normal file
@@ -0,0 +1,35 @@
|
||||
class Gitea::Repository::Entries::ListService < Gitea::ClientService
|
||||
attr_reader :user, :repo_name, :args
|
||||
|
||||
# ref: The name of the commit/branch/tag. Default the repository’s default branch (usually master)
|
||||
# repo_name: the name of repository
|
||||
def initialize(user, repo_name, **args)
|
||||
@user = user
|
||||
@repo_name = repo_name
|
||||
@args = {ref: 'master'}.merge(args.compact)
|
||||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
render_result(response)
|
||||
end
|
||||
|
||||
private
|
||||
def params
|
||||
@args.merge(token: user.gitea_token)
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/#{user.login}/#{repo_name}/contents".freeze
|
||||
end
|
||||
|
||||
def render_result(response)
|
||||
body = JSON.parse(response.body)
|
||||
case response.status
|
||||
when 200
|
||||
body
|
||||
else
|
||||
{status: -1, message: "#{body['message']}"}
|
||||
end
|
||||
end
|
||||
end
|
||||
43
app/services/gitea/repository/entries/update_service.rb
Normal file
43
app/services/gitea/repository/entries/update_service.rb
Normal file
@@ -0,0 +1,43 @@
|
||||
class Gitea::Repository::Entries::UpdateService < Gitea::ClientService
|
||||
attr_reader :user, :repo_name, :filepath, :body
|
||||
|
||||
# ref: The name of the commit/branch/tag. Default the repository’s default branch (usually master)
|
||||
# filepath: path of the dir, file, symlink or submodule in the repo
|
||||
# repo_name: the name of repository
|
||||
# body:
|
||||
# {
|
||||
# "author": {
|
||||
# "email": "user@example.com",
|
||||
# "name": "string"
|
||||
# },
|
||||
# "branch": "string",
|
||||
# "committer": {
|
||||
# "email": "user@example.com",
|
||||
# "name": "string"
|
||||
# },
|
||||
# "content": "string", # content must be base64 encoded
|
||||
# "message": "string",
|
||||
# "new_branch": "string"
|
||||
# }
|
||||
#
|
||||
def initialize(user, repo_name, filepath, body)
|
||||
@user = user
|
||||
@repo_name = repo_name
|
||||
@filepath = filepath
|
||||
@body = body
|
||||
end
|
||||
|
||||
def call
|
||||
put(url, params)
|
||||
end
|
||||
|
||||
private
|
||||
def params
|
||||
Hash.new.merge(token: user.gitea_token, data: body)
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/#{user.login}/#{repo_name}/contents/#{filepath}".freeze
|
||||
end
|
||||
|
||||
end
|
||||
32
app/services/gitea/repository/fork_service.rb
Normal file
32
app/services/gitea/repository/fork_service.rb
Normal file
@@ -0,0 +1,32 @@
|
||||
class Gitea::Repository::ForkService < Gitea::ClientService
|
||||
attr_reader :old_owner, :target_owner, :repo_name, :organization
|
||||
|
||||
# old_owner: 被clone的项目(源项目)拥有者
|
||||
# target_owner: clone后的醒目(新项目)的拥有者
|
||||
# body:
|
||||
# {
|
||||
# "organization": "string" #组织名称
|
||||
# }
|
||||
def initialize(old_owner, target_owner, repo_name, organization=nil)
|
||||
@old_owner = old_owner
|
||||
@target_owner = target_owner
|
||||
@repo_name = repo_name
|
||||
end
|
||||
|
||||
def call
|
||||
post(url, request_params)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def request_params
|
||||
hash = Hash.new.merge(token: target_owner.gitea_token)
|
||||
hash = hash.merge(data: {organization: organization}) if organization
|
||||
hash
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/#{old_owner.login}/#{repo_name}/forks".freeze
|
||||
end
|
||||
|
||||
end
|
||||
31
app/services/gitea/repository/get_service.rb
Normal file
31
app/services/gitea/repository/get_service.rb
Normal file
@@ -0,0 +1,31 @@
|
||||
class Gitea::Repository::GetService < Gitea::ClientService
|
||||
attr_reader :user, :repo_name
|
||||
|
||||
def initialize(user, repo_name)
|
||||
@user = user
|
||||
@repo_name = repo_name
|
||||
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_name}".freeze
|
||||
end
|
||||
|
||||
def render_result(response)
|
||||
case response.status
|
||||
when 200
|
||||
JSON.parse(response.body)
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
end
|
||||
28
app/services/gitea/repository/members/add_service.rb
Normal file
28
app/services/gitea/repository/members/add_service.rb
Normal file
@@ -0,0 +1,28 @@
|
||||
# 添加协作者/或者更改协作这的可读写权限
|
||||
class Gitea::Repository::Members::AddService < Gitea::ClientService
|
||||
attr_reader :owner, :repo_name, :collaborator, :permission
|
||||
|
||||
# owner: owner of the repo
|
||||
# repo_name: name of the repo
|
||||
# collaborator: username of the collaborator
|
||||
# permission: permission name, FIX: admin | read | write
|
||||
def initialize(owner, repo_name, collaborator, permission)
|
||||
@owner = owner
|
||||
@repo_name = repo_name
|
||||
@collaborator = collaborator
|
||||
@permission = permission
|
||||
end
|
||||
|
||||
def call
|
||||
put(url, params)
|
||||
end
|
||||
|
||||
private
|
||||
def params
|
||||
Hash.new.merge(token: owner.gitea_token, data: {permission: permission})
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/#{owner.login}/#{repo_name}/collaborators/#{collaborator}".freeze
|
||||
end
|
||||
end
|
||||
25
app/services/gitea/repository/members/delete_service.rb
Normal file
25
app/services/gitea/repository/members/delete_service.rb
Normal file
@@ -0,0 +1,25 @@
|
||||
class Gitea::Repository::Members::DeleteService < Gitea::ClientService
|
||||
attr_reader :owner, :repo_name, :collaborator
|
||||
|
||||
# owner: owner of the repo
|
||||
# repo_name: name of the repo
|
||||
# collaborator: username of the collaborator
|
||||
def initialize(owner, repo_name, collaborator)
|
||||
@owner = owner
|
||||
@repo_name = repo_name
|
||||
@collaborator = collaborator
|
||||
end
|
||||
|
||||
def call
|
||||
delete(url, params)
|
||||
end
|
||||
|
||||
private
|
||||
def params
|
||||
Hash.new.merge(token: owner.gitea_token)
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/#{owner.login}/#{repo_name}/collaborators/#{collaborator}".freeze
|
||||
end
|
||||
end
|
||||
47
app/services/gitea/repository/migrate_service.rb
Normal file
47
app/services/gitea/repository/migrate_service.rb
Normal file
@@ -0,0 +1,47 @@
|
||||
class Gitea::Repository::MigrateService < Gitea::ClientService
|
||||
attr_reader :token, :params
|
||||
|
||||
# params description:
|
||||
# {
|
||||
# auth_username string
|
||||
# clone_addr* string #clone地址
|
||||
# description string
|
||||
# issues boolean
|
||||
# labels boolean
|
||||
# milestones boolean
|
||||
# mirror boolean
|
||||
# private boolean
|
||||
# pull_requests boolean
|
||||
# releases boolean
|
||||
# repo_name* string #仓库名称
|
||||
# uid* integer($int64) #gitea用户id或组织id
|
||||
# wiki boolean
|
||||
# }
|
||||
# EX:
|
||||
# params = {
|
||||
# clone_addr: 'xxx.com',
|
||||
# repo_name: 'repo_name',
|
||||
# uid: 2,
|
||||
# private: false
|
||||
# }
|
||||
|
||||
def initialize(token, params)
|
||||
@token = token
|
||||
@params = params
|
||||
end
|
||||
|
||||
def call
|
||||
post(url, request_params)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def request_params
|
||||
Hash.new.merge(token: token, data: params)
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/migrate".freeze
|
||||
end
|
||||
|
||||
end
|
||||
33
app/services/gitea/repository/tags/list_service.rb
Normal file
33
app/services/gitea/repository/tags/list_service.rb
Normal file
@@ -0,0 +1,33 @@
|
||||
class Gitea::Repository::Tags::ListService < Gitea::ClientService
|
||||
attr_reader :user, :repo_name
|
||||
|
||||
# ref: The name of the commit/branch/tag. Default the repository’s default branch (usually master)
|
||||
# repo_name: the name of repository
|
||||
def initialize(user, repo_name)
|
||||
@user = user
|
||||
@repo_name = repo_name
|
||||
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_name}/tags".freeze
|
||||
end
|
||||
|
||||
def render_result(response)
|
||||
body = JSON.parse(response.body)
|
||||
case response.status
|
||||
when 200 then body
|
||||
else
|
||||
{status: -1, message: "#{body['message']}"}
|
||||
end
|
||||
end
|
||||
end
|
||||
33
app/services/gitea/repository/update_service.rb
Normal file
33
app/services/gitea/repository/update_service.rb
Normal file
@@ -0,0 +1,33 @@
|
||||
class Gitea::Repository::UpdateService < Gitea::ClientService
|
||||
attr_reader :user, :repo, :params
|
||||
|
||||
# params:
|
||||
# {
|
||||
# name: 'name of the repository',
|
||||
# default_branch: 'sets the default branch for this repository.',
|
||||
# description: 'string a short description of the repository.',
|
||||
# private: 'boolean either true to make the repository private or false to make it public.',
|
||||
# has_issues: 'boolean either true to enable issues for this repository or false to disable them.',
|
||||
# has_pull_requests: 'boolean either true to allow pull requests, or false to prevent pull request.',
|
||||
# allow_merge_commits: 'boolean either true to allow merging pull requests with a merge commit, or false to prevent merging pull requests with merge commits. has_pull_requests must be true.'
|
||||
# }
|
||||
|
||||
def initialize(user, repo, params={})
|
||||
@user = user
|
||||
@repo = repo
|
||||
@params = params
|
||||
end
|
||||
|
||||
def call
|
||||
patch(url, data_params)
|
||||
end
|
||||
|
||||
private
|
||||
def url
|
||||
"/repos/#{user.login}/#{repo}"
|
||||
end
|
||||
|
||||
def data_params
|
||||
Hash.new.merge(token: user.gitea_token, data: params)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user