init project

This commit is contained in:
Jasder
2020-03-09 00:40:16 +08:00
commit 2937b2a94d
6549 changed files with 7215173 additions and 0 deletions

View 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

View 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

View 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

View 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

View 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

View 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 repositorys 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

View 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 repositorys 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

View 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 repositorys 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 repositorys 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

View 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 repositorys 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

View 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 repositorys 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

View 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

View 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

View 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

View 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

View 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

View 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 repositorys 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

View 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