From 3f78899c58d8b742e0f3af061bd763f7950608d4 Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 3 Feb 2023 10:53:24 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9Abranch?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- .../api/v1/projects/branches_controller.rb | 6 ++- .../api/v1/projects/branches/list_service.rb | 40 +++++++++++++++++++ .../_simple_gitea_detail.json.jbuilder | 2 +- .../v1/projects/branches/index.json.jbuilder | 4 ++ 5 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 app/services/api/v1/projects/branches/list_service.rb create mode 100644 app/views/api/v1/projects/branches/index.json.jbuilder diff --git a/Gemfile b/Gemfile index e37371108..2a431701b 100644 --- a/Gemfile +++ b/Gemfile @@ -139,4 +139,4 @@ gem 'doorkeeper' gem 'doorkeeper-jwt' -gem 'gitea-client', '~> 0.11.1' \ No newline at end of file +gem 'gitea-client', '~> 0.11.4' \ No newline at end of file diff --git a/app/controllers/api/v1/projects/branches_controller.rb b/app/controllers/api/v1/projects/branches_controller.rb index bc4919616..33346573c 100644 --- a/app/controllers/api/v1/projects/branches_controller.rb +++ b/app/controllers/api/v1/projects/branches_controller.rb @@ -1,5 +1,9 @@ class Api::V1::Projects::BranchesController < Api::V1::BaseController - before_action :require_public_and_member_above, only: [:all] + before_action :require_public_and_member_above, only: [:index, :all] + + def index + @result_object = Api::V1::Projects::Branches::ListService.call(@project, {name: params[:name], page: page, limit: limit}, current_user&.gitea_token) + end def all @result_object = Api::V1::Projects::Branches::AllListService.call(@project, current_user&.gitea_token) diff --git a/app/services/api/v1/projects/branches/list_service.rb b/app/services/api/v1/projects/branches/list_service.rb new file mode 100644 index 000000000..e5c6fe442 --- /dev/null +++ b/app/services/api/v1/projects/branches/list_service.rb @@ -0,0 +1,40 @@ +class Api::V1::Projects::Branches::ListService < ApplicationService + + attr_accessor :project, :token, :owner, :repo, :name, :page, :limit + attr_accessor :gitea_data + + def initialize(project, params, token=nil) + @project = project + @owner = project&.owner.login + @repo = project&.identifier + @token = token + @name = params[:name] + @page = params[:page] + @limit = params[:limit] + end + + def call + load_gitea_data + + gitea_data + end + + private + def request_params + params = { + access_token: token, + page: page, + limit: limit + } + params.merge!({name: name}) if name.present? + + params + end + + def load_gitea_data + puts request_params + @gitea_data = $gitea_client.get_repos_branches_by_owner_repo(owner, repo, {query: request_params}) rescue nil + puts @gitea_data + raise Error, '获取分支列表失败!' unless @gitea_data.is_a?(Hash) + end +end \ No newline at end of file diff --git a/app/views/api/v1/projects/branches/_simple_gitea_detail.json.jbuilder b/app/views/api/v1/projects/branches/_simple_gitea_detail.json.jbuilder index 70fac8238..6a35b782e 100644 --- a/app/views/api/v1/projects/branches/_simple_gitea_detail.json.jbuilder +++ b/app/views/api/v1/projects/branches/_simple_gitea_detail.json.jbuilder @@ -18,7 +18,7 @@ json.protected branch['protected'] json.user_can_push branch['user_can_push'] json.user_can_merge branch['user_can_merge'] json.commit_id branch['commit_id'] -json.commit_time_from_now time_from_now(branch['commit_time'].to_time) +json.commit_time_from_now time_from_now(branch['commit']['timestamp'].to_time) json.commit_time branch['commit_time'] json.default_branch branch['default_branch'] json.http_url render_http_url(@project) diff --git a/app/views/api/v1/projects/branches/index.json.jbuilder b/app/views/api/v1/projects/branches/index.json.jbuilder new file mode 100644 index 000000000..cfb9bb647 --- /dev/null +++ b/app/views/api/v1/projects/branches/index.json.jbuilder @@ -0,0 +1,4 @@ +json.total_count @result_object[:total_data].to_i +json.branches @result_object[:data].each do |branch| + json.partial! "api/v1/projects/branches/simple_gitea_detail", branch: branch +end \ No newline at end of file From f2cdba29eaa2727a825f9094f44174f45e79d219 Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 3 Feb 2023 13:45:32 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=9B=B4?= =?UTF-8?q?=E6=94=B9=E9=BB=98=E8=AE=A4=E5=88=86=E6=94=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/v1/projects/branches_controller.rb | 11 ++++ .../v1/projects/branches/create_service.rb | 7 ++- .../branches/update_default_branch_service.rb | 55 +++++++++++++++++++ config/routes/api.rb | 3 +- 4 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 app/services/api/v1/projects/branches/update_default_branch_service.rb diff --git a/app/controllers/api/v1/projects/branches_controller.rb b/app/controllers/api/v1/projects/branches_controller.rb index 33346573c..f16aa8373 100644 --- a/app/controllers/api/v1/projects/branches_controller.rb +++ b/app/controllers/api/v1/projects/branches_controller.rb @@ -15,6 +15,17 @@ class Api::V1::Projects::BranchesController < Api::V1::BaseController @result_object = Api::V1::Projects::Branches::CreateService.call(@project, branch_params, current_user&.gitea_token) end + before_action :require_manager_above, only: [:update_default_branch] + + def update_default_branch + @result_object = Api::V1::Projects::Branches::UpdateDefaultBranchService.call(@project, params[:default_branch], current_user&.gitea_token) + if @result_object + return render_ok + else + return render_error('更新默认分支失败!') + end + end + private def branch_params params.require(:branch).permit(:new_branch_name, :old_branch_name) diff --git a/app/services/api/v1/projects/branches/create_service.rb b/app/services/api/v1/projects/branches/create_service.rb index 2837dfcf4..eae3779f8 100644 --- a/app/services/api/v1/projects/branches/create_service.rb +++ b/app/services/api/v1/projects/branches/create_service.rb @@ -18,7 +18,7 @@ class Api::V1::Projects::Branches::CreateService < ApplicationService def call raise Error, errors.full_messages.join(",") unless valid? - check_new_branch_exist + check_branch_exist excute_data_to_gitea gitea_data @@ -43,9 +43,10 @@ class Api::V1::Projects::Branches::CreateService < ApplicationService raise Error, '创建分支失败!' unless @gitea_data.is_a?(Hash) end - def check_new_branch_exist + 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, '分支已存在!' if result['branch_name'].include?(@new_branch_name) + raise Error, '旧分支不存在!' if !result['branch_name'].include?(@old_branch_name) + raise Error, '新分支已存在!' if result['branch_name'].include?(@new_branch_name) end end \ No newline at end of file diff --git a/app/services/api/v1/projects/branches/update_default_branch_service.rb b/app/services/api/v1/projects/branches/update_default_branch_service.rb new file mode 100644 index 000000000..5c220aa5d --- /dev/null +++ b/app/services/api/v1/projects/branches/update_default_branch_service.rb @@ -0,0 +1,55 @@ +class Api::V1::Projects::Branches::UpdateDefaultBranchService < ApplicationService + include ActiveModel::Model + + attr_accessor :project, :token, :owner, :repo, :new_default_branch + attr_accessor :gitea_data + + validates :new_default_branch, presence: true + + def initialize(project, new_default_branch, token=nil) + @project = project + @owner = project&.owner.login + @repo = project&.identifier + @new_default_branch = new_default_branch + @token = token + end + + def call + raise Error, errors.full_messages.join(",") unless valid? + + check_branch_exist + update_project + excute_data_to_gitea + + gitea_data + end + + private + def request_params + { + access_token: token + } + end + + def request_body + { + default_branch: new_default_branch + } + end + + def update_project + @project.attributes = request_body + raise Error, '更新默认分支失败!' unless @project.save + end + + def excute_data_to_gitea + @gitea_data = $gitea_client.patch_repos_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, '新默认分支不存在!' if !result['branch_name'].include?(@new_default_branch) + end +end \ No newline at end of file diff --git a/config/routes/api.rb b/config/routes/api.rb index 19531526e..92f18e2d7 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -48,7 +48,8 @@ defaults format: :json do end resources :branches, only:[:index, :create] do collection do - get :all + get :all + patch :update_default_branch end end resources :commits, only: [:index] From 8b90164247e9ea7b1c37e6f014ff1d6867370312 Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 3 Feb 2023 15:03:59 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=88=86=E6=94=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/v1/projects/branches_controller.rb | 11 ++++- .../v1/projects/branches/delete_service.rb | 42 +++++++++++++++++++ config/routes/api.rb | 2 +- 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 app/services/api/v1/projects/branches/delete_service.rb diff --git a/app/controllers/api/v1/projects/branches_controller.rb b/app/controllers/api/v1/projects/branches_controller.rb index f16aa8373..5d685a4a9 100644 --- a/app/controllers/api/v1/projects/branches_controller.rb +++ b/app/controllers/api/v1/projects/branches_controller.rb @@ -9,12 +9,21 @@ class Api::V1::Projects::BranchesController < Api::V1::BaseController @result_object = Api::V1::Projects::Branches::AllListService.call(@project, current_user&.gitea_token) end - before_action :require_operate_above, only: [:create] + before_action :require_operate_above, only: [:create, :destroy] def create @result_object = Api::V1::Projects::Branches::CreateService.call(@project, branch_params, current_user&.gitea_token) end + def destroy + @result_object = Api::V1::Projects::Branches::DeleteService.call(@project, params[:id], current_user&.gitea_token) + if @result_object + return render_ok + else + return render_error('删除分支失败!') + end + end + before_action :require_manager_above, only: [:update_default_branch] def update_default_branch diff --git a/app/services/api/v1/projects/branches/delete_service.rb b/app/services/api/v1/projects/branches/delete_service.rb new file mode 100644 index 000000000..c6ff5f80e --- /dev/null +++ b/app/services/api/v1/projects/branches/delete_service.rb @@ -0,0 +1,42 @@ +class Api::V1::Projects::Branches::DeleteService < ApplicationService + include ActiveModel::Model + + attr_accessor :project, :token, :owner, :repo, :branch_name + attr_accessor :gitea_data + + validates :branch_name, presence: true + + def initialize(project, branch_name, token=nil) + @project = project + @owner = project&.owner.login + @repo = project&.identifier + @branch_name = branch_name + @token = token + end + + def call + raise Error, errors.full_messages.join(",") unless valid? + + # check_branch_exist + excute_data_to_gitea + + true + end + + private + def request_params + { + access_token: token + } + end + + def excute_data_to_gitea + @gitea_data = $gitea_client.delete_repos_branches_by_owner_repo_branch(owner, repo, branch_name, {query: request_params}) rescue nil + 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, '分支不存在!' if !result['branch_name'].include?(@branch_name) + end +end \ No newline at end of file diff --git a/config/routes/api.rb b/config/routes/api.rb index 92f18e2d7..6fb9f3500 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -46,7 +46,7 @@ defaults format: :json do get :hooktasks end end - resources :branches, only:[:index, :create] do + resources :branches, only:[:index, :create, :destroy] do collection do get :all patch :update_default_branch From 2772b97e32ebdcd740736ab9f5988a2dd75028f6 Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 3 Feb 2023 18:03:57 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E5=88=97=E8=A1=A8=E5=92=8C=E5=88=A0=E9=99=A4=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- .../api/v1/projects/tags_controller.rb | 18 ++++++++ .../v1/projects/branches/delete_service.rb | 2 +- .../api/v1/projects/tags/delete_service.rb | 42 +++++++++++++++++++ .../api/v1/projects/tags/list_service.rb | 36 ++++++++++++++++ .../_simple_gitea_index_detail.json.jbuilder | 26 ++++++++++++ .../api/v1/projects/tags/index.json.jbuilder | 4 ++ config/routes/api.rb | 1 + 8 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 app/controllers/api/v1/projects/tags_controller.rb create mode 100644 app/services/api/v1/projects/tags/delete_service.rb create mode 100644 app/services/api/v1/projects/tags/list_service.rb create mode 100644 app/views/api/v1/projects/tags/_simple_gitea_index_detail.json.jbuilder create mode 100644 app/views/api/v1/projects/tags/index.json.jbuilder diff --git a/Gemfile b/Gemfile index 2a431701b..45a83fd28 100644 --- a/Gemfile +++ b/Gemfile @@ -139,4 +139,4 @@ gem 'doorkeeper' gem 'doorkeeper-jwt' -gem 'gitea-client', '~> 0.11.4' \ No newline at end of file +gem 'gitea-client', '~> 0.11.5' \ No newline at end of file diff --git a/app/controllers/api/v1/projects/tags_controller.rb b/app/controllers/api/v1/projects/tags_controller.rb new file mode 100644 index 000000000..9764225d4 --- /dev/null +++ b/app/controllers/api/v1/projects/tags_controller.rb @@ -0,0 +1,18 @@ +class Api::V1::Projects::TagsController < Api::V1::BaseController + before_action :require_public_and_member_above, only: [:index] + + def index + @result_object = Api::V1::Projects::Tags::ListService.call(@project, {page: page, limit: limit}, current_user&.gitea_token) + end + + before_action :require_operate_above, only: [:destroy] + + def destroy + @result_object = Api::V1::Projects::Tags::DeleteService.call(@project, params[:id], current_user&.gitea_token) + if @result_object + return render_ok + else + return render_error('删除标签失败!') + end + end +end \ No newline at end of file diff --git a/app/services/api/v1/projects/branches/delete_service.rb b/app/services/api/v1/projects/branches/delete_service.rb index c6ff5f80e..ab9fee157 100644 --- a/app/services/api/v1/projects/branches/delete_service.rb +++ b/app/services/api/v1/projects/branches/delete_service.rb @@ -17,7 +17,7 @@ class Api::V1::Projects::Branches::DeleteService < ApplicationService def call raise Error, errors.full_messages.join(",") unless valid? - # check_branch_exist + check_branch_exist excute_data_to_gitea true diff --git a/app/services/api/v1/projects/tags/delete_service.rb b/app/services/api/v1/projects/tags/delete_service.rb new file mode 100644 index 000000000..ee383a5bd --- /dev/null +++ b/app/services/api/v1/projects/tags/delete_service.rb @@ -0,0 +1,42 @@ +class Api::V1::Projects::Tags::DeleteService < ApplicationService + include ActiveModel::Model + + attr_accessor :project, :token, :owner, :repo, :tag_name + attr_accessor :gitea_data + + validates :tag_name, presence: true + + def initialize(project, tag_name, token=nil) + @project = project + @owner = project&.owner.login + @repo = project&.identifier + @tag_name = tag_name + @token = token + end + + def call + raise Error, errors.full_messages.join(",") unless valid? + + check_tag_exist + excute_data_to_gitea + + true + end + + private + def request_params + { + access_token: token + } + end + + def excute_data_to_gitea + @gitea_data = $gitea_client.delete_repos_tags_by_owner_repo_tag(owner, repo, tag_name, {query: request_params}) rescue nil + end + + def check_tag_exist + result = $gitea_client.get_repos_tag_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil + raise Error, '查询标签名称失败!' unless result.is_a?(Array) + raise Error, '标签不存在!' if !result.include?(@tag_name) + end +end \ No newline at end of file diff --git a/app/services/api/v1/projects/tags/list_service.rb b/app/services/api/v1/projects/tags/list_service.rb new file mode 100644 index 000000000..a7743fe00 --- /dev/null +++ b/app/services/api/v1/projects/tags/list_service.rb @@ -0,0 +1,36 @@ +class Api::V1::Projects::Tags::ListService < ApplicationService + + attr_accessor :project, :token, :owner, :repo, :page, :limit + attr_accessor :gitea_data + + def initialize(project, params, token=nil) + @project = project + @owner = project&.owner.login + @repo = project&.identifier + @token = token + @page = params[:page] + @limit = params[:limit] + end + + def call + load_gitea_data + + gitea_data + end + + private + def request_params + params = { + access_token: token, + page: page, + limit: limit + } + + params + end + + def load_gitea_data + @gitea_data = $gitea_client.get_repos_tags_by_owner_repo(owner, repo, {query: request_params}) rescue nil + raise Error, '获取标签列表失败!' unless @gitea_data.is_a?(Hash) + end +end \ No newline at end of file diff --git a/app/views/api/v1/projects/tags/_simple_gitea_index_detail.json.jbuilder b/app/views/api/v1/projects/tags/_simple_gitea_index_detail.json.jbuilder new file mode 100644 index 000000000..6dada8204 --- /dev/null +++ b/app/views/api/v1/projects/tags/_simple_gitea_index_detail.json.jbuilder @@ -0,0 +1,26 @@ +if tag.present? && tag.is_a?(Hash) + json.name tag['name'] + json.id tag['id'] + json.zipball_url render_zip_url(@owner, @repository, tag['name']) + json.tarball_url render_tar_url(@owner, @repository, tag['name']) + json.tagger do + json.partial! 'commit_author', user: render_cache_commit_author(tag['tagger']), name: tag['tagger']['name'] + end + json.time_ago time_from_now(tag['tagger']['date'].to_time) + json.created_at_unix tag['tagger']['date'].to_time.to_i + json.message tag['message'] + json.commit do + json.sha tag['commit']['sha'] + json.message tag['commit']['message'] + json.time_ago time_from_now(tag['commit']['commiter']['date'].to_time) + json.created_at_unix tag['commit']['commiter']['date'].to_time.to_i + json.committer do + json.partial! 'commit_author', user: render_cache_commit_author(tag['commit']['commiter']), name: tag['commit']['commiter']['name'] + end + json.author do + json.partial! 'commit_author', user: render_cache_commit_author(tag['commit']['author']), name: tag['commit']['author']['name'] + end + end +else + json.name tag +end \ No newline at end of file diff --git a/app/views/api/v1/projects/tags/index.json.jbuilder b/app/views/api/v1/projects/tags/index.json.jbuilder new file mode 100644 index 000000000..3c6f2d4a7 --- /dev/null +++ b/app/views/api/v1/projects/tags/index.json.jbuilder @@ -0,0 +1,4 @@ +json.total_count @result_object[:total_data].to_i +json.tags @result_object[:data].each do |tag| + json.partial! "api/v1/projects/tags/simple_gitea_index_detail", tag: tag +end \ No newline at end of file diff --git a/config/routes/api.rb b/config/routes/api.rb index 6fb9f3500..870861579 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -52,6 +52,7 @@ defaults format: :json do patch :update_default_branch end end + resources :tags, only: [:index, :destroy] resources :commits, only: [:index] resources :code_stats, only: [:index] get '/commits/:sha/diff', to: 'commits#diff' From bef13509336521343fc27c4529bcb135289bc257 Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 3 Feb 2023 18:20:00 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9Aload=5Fproject?= =?UTF-8?q?=E6=96=B0=E5=A2=9Erepository?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/concerns/api/project_helper.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/concerns/api/project_helper.rb b/app/controllers/concerns/api/project_helper.rb index 52967e784..44cac08c7 100644 --- a/app/controllers/concerns/api/project_helper.rb +++ b/app/controllers/concerns/api/project_helper.rb @@ -6,7 +6,8 @@ module Api::ProjectHelper repo = params[:repo] @project, @owner = Project.find_with_namespace(namespace, repo) - + @repository = @project&.repository + if @project logger.info "###########:project founded" @project From 726453ea99a1294bdb89d03e53e02387cdee1d86 Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 3 Feb 2023 18:23:16 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9Atags=20detail?= =?UTF-8?q?=20=E6=97=A0=E6=B3=95=E8=8E=B7=E5=8F=96commit=5Fuser?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v1/projects/tags/_simple_gitea_index_detail.json.jbuilder | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/api/v1/projects/tags/_simple_gitea_index_detail.json.jbuilder b/app/views/api/v1/projects/tags/_simple_gitea_index_detail.json.jbuilder index 6dada8204..8ceab48e5 100644 --- a/app/views/api/v1/projects/tags/_simple_gitea_index_detail.json.jbuilder +++ b/app/views/api/v1/projects/tags/_simple_gitea_index_detail.json.jbuilder @@ -15,10 +15,10 @@ if tag.present? && tag.is_a?(Hash) json.time_ago time_from_now(tag['commit']['commiter']['date'].to_time) json.created_at_unix tag['commit']['commiter']['date'].to_time.to_i json.committer do - json.partial! 'commit_author', user: render_cache_commit_author(tag['commit']['commiter']), name: tag['commit']['commiter']['name'] + json.partial! 'api/v1/users/commit_user', user: render_cache_commit_author(tag['commit']['commiter']), name: tag['commit']['commiter']['name'] end json.author do - json.partial! 'commit_author', user: render_cache_commit_author(tag['commit']['author']), name: tag['commit']['author']['name'] + json.partial! 'api/v1/users/commit_user', user: render_cache_commit_author(tag['commit']['author']), name: tag['commit']['author']['name'] end end else From 0800f9e6e012b8ee8f455e843868d9d6d18dda8d Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 3 Feb 2023 18:24:07 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v1/projects/tags/_simple_gitea_index_detail.json.jbuilder | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/api/v1/projects/tags/_simple_gitea_index_detail.json.jbuilder b/app/views/api/v1/projects/tags/_simple_gitea_index_detail.json.jbuilder index 8ceab48e5..b8ba28f85 100644 --- a/app/views/api/v1/projects/tags/_simple_gitea_index_detail.json.jbuilder +++ b/app/views/api/v1/projects/tags/_simple_gitea_index_detail.json.jbuilder @@ -4,7 +4,7 @@ if tag.present? && tag.is_a?(Hash) json.zipball_url render_zip_url(@owner, @repository, tag['name']) json.tarball_url render_tar_url(@owner, @repository, tag['name']) json.tagger do - json.partial! 'commit_author', user: render_cache_commit_author(tag['tagger']), name: tag['tagger']['name'] + json.partial! 'api/v1/users/commit_user', user: render_cache_commit_author(tag['tagger']), name: tag['tagger']['name'] end json.time_ago time_from_now(tag['tagger']['date'].to_time) json.created_at_unix tag['tagger']['date'].to_time.to_i From 7c911f5b8610ad18e12c68016a8369442c43609a Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 6 Feb 2023 09:49:36 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E5=8C=B9=E9=85=8D=E7=89=B9=E6=AE=8A=E7=AC=A6=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/projects/branches_controller.rb | 4 ++-- app/controllers/api/v1/projects/tags_controller.rb | 2 +- app/services/api/v1/projects/tags/delete_service.rb | 2 +- config/routes/api.rb | 8 ++++++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/controllers/api/v1/projects/branches_controller.rb b/app/controllers/api/v1/projects/branches_controller.rb index 5d685a4a9..861bf9692 100644 --- a/app/controllers/api/v1/projects/branches_controller.rb +++ b/app/controllers/api/v1/projects/branches_controller.rb @@ -16,7 +16,7 @@ class Api::V1::Projects::BranchesController < Api::V1::BaseController end def destroy - @result_object = Api::V1::Projects::Branches::DeleteService.call(@project, params[:id], current_user&.gitea_token) + @result_object = Api::V1::Projects::Branches::DeleteService.call(@project, params[:name], current_user&.gitea_token) if @result_object return render_ok else @@ -27,7 +27,7 @@ class Api::V1::Projects::BranchesController < Api::V1::BaseController before_action :require_manager_above, only: [:update_default_branch] def update_default_branch - @result_object = Api::V1::Projects::Branches::UpdateDefaultBranchService.call(@project, params[:default_branch], current_user&.gitea_token) + @result_object = Api::V1::Projects::Branches::UpdateDefaultBranchService.call(@project, params[:name], current_user&.gitea_token) if @result_object return render_ok else diff --git a/app/controllers/api/v1/projects/tags_controller.rb b/app/controllers/api/v1/projects/tags_controller.rb index 9764225d4..ded55f888 100644 --- a/app/controllers/api/v1/projects/tags_controller.rb +++ b/app/controllers/api/v1/projects/tags_controller.rb @@ -8,7 +8,7 @@ class Api::V1::Projects::TagsController < Api::V1::BaseController before_action :require_operate_above, only: [:destroy] def destroy - @result_object = Api::V1::Projects::Tags::DeleteService.call(@project, params[:id], current_user&.gitea_token) + @result_object = Api::V1::Projects::Tags::DeleteService.call(@project, params[:name], current_user&.gitea_token) if @result_object return render_ok else diff --git a/app/services/api/v1/projects/tags/delete_service.rb b/app/services/api/v1/projects/tags/delete_service.rb index ee383a5bd..44c162259 100644 --- a/app/services/api/v1/projects/tags/delete_service.rb +++ b/app/services/api/v1/projects/tags/delete_service.rb @@ -17,7 +17,7 @@ class Api::V1::Projects::Tags::DeleteService < ApplicationService def call raise Error, errors.full_messages.join(",") unless valid? - check_tag_exist + # check_tag_exist excute_data_to_gitea true diff --git a/config/routes/api.rb b/config/routes/api.rb index 870861579..f86aae83e 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -46,13 +46,17 @@ defaults format: :json do get :hooktasks end end - resources :branches, only:[:index, :create, :destroy] do + resources :branches, param: :name, only:[:index, :create, :destroy] do collection do get :all patch :update_default_branch end end - resources :tags, only: [:index, :destroy] + match 'branches/*name', to: "branches#destroy", via: :all + + resources :tags, param: :name, only: [:index, :destroy] + match 'tags/*name', to: "tags#destroy", via: :all + resources :commits, only: [:index] resources :code_stats, only: [:index] get '/commits/:sha/diff', to: 'commits#diff' From 0eb17aa90f4d3eaa1fd849582aa130162027c2a5 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 6 Feb 2023 10:07:15 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9A=E5=88=86?= =?UTF-8?q?=E6=94=AF=E5=88=97=E8=A1=A8=E6=90=9C=E7=B4=A2=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/projects/branches_controller.rb | 2 +- app/services/api/v1/projects/tags/delete_service.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/v1/projects/branches_controller.rb b/app/controllers/api/v1/projects/branches_controller.rb index 861bf9692..0c89f6012 100644 --- a/app/controllers/api/v1/projects/branches_controller.rb +++ b/app/controllers/api/v1/projects/branches_controller.rb @@ -2,7 +2,7 @@ class Api::V1::Projects::BranchesController < Api::V1::BaseController before_action :require_public_and_member_above, only: [:index, :all] def index - @result_object = Api::V1::Projects::Branches::ListService.call(@project, {name: params[:name], page: page, limit: limit}, current_user&.gitea_token) + @result_object = Api::V1::Projects::Branches::ListService.call(@project, {name: params[:keyword], page: page, limit: limit}, current_user&.gitea_token) end def all diff --git a/app/services/api/v1/projects/tags/delete_service.rb b/app/services/api/v1/projects/tags/delete_service.rb index 44c162259..ee383a5bd 100644 --- a/app/services/api/v1/projects/tags/delete_service.rb +++ b/app/services/api/v1/projects/tags/delete_service.rb @@ -17,7 +17,7 @@ class Api::V1::Projects::Tags::DeleteService < ApplicationService def call raise Error, errors.full_messages.join(",") unless valid? - # check_tag_exist + check_tag_exist excute_data_to_gitea true From 6cfb5dfbe21b892f36d2408cc3b61a8c04894348 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 7 Feb 2023 10:33:46 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E4=BF=9D=E6=8A=A4=E5=88=86=E6=94=AF=E5=92=8C=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=8F=91=E8=A1=8C=E7=89=88=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/projects/tags_controller.rb | 1 + app/services/api/v1/projects/branches/delete_service.rb | 7 ++++++- app/services/api/v1/projects/tags/delete_service.rb | 7 ++++++- app/views/api/v1/projects/tags/index.json.jbuilder | 1 + 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/v1/projects/tags_controller.rb b/app/controllers/api/v1/projects/tags_controller.rb index ded55f888..06c3b1c8e 100644 --- a/app/controllers/api/v1/projects/tags_controller.rb +++ b/app/controllers/api/v1/projects/tags_controller.rb @@ -2,6 +2,7 @@ class Api::V1::Projects::TagsController < Api::V1::BaseController before_action :require_public_and_member_above, only: [:index] def index + @release_tags = @repository.version_releases.pluck(:tag_name) @result_object = Api::V1::Projects::Tags::ListService.call(@project, {page: page, limit: limit}, current_user&.gitea_token) end diff --git a/app/services/api/v1/projects/branches/delete_service.rb b/app/services/api/v1/projects/branches/delete_service.rb index ab9fee157..79a6ba0db 100644 --- a/app/services/api/v1/projects/branches/delete_service.rb +++ b/app/services/api/v1/projects/branches/delete_service.rb @@ -31,7 +31,12 @@ class Api::V1::Projects::Branches::DeleteService < ApplicationService end def excute_data_to_gitea - @gitea_data = $gitea_client.delete_repos_branches_by_owner_repo_branch(owner, repo, branch_name, {query: request_params}) rescue nil + begin + @gitea_data = $gitea_client.delete_repos_branches_by_owner_repo_branch(owner, repo, branch_name, {query: request_params}) + rescue => e + raise Error, '保护分支无法删除!' if e.to_s.include?("branch protected") + raise Error, '删除分支失败!' + end end def check_branch_exist diff --git a/app/services/api/v1/projects/tags/delete_service.rb b/app/services/api/v1/projects/tags/delete_service.rb index ee383a5bd..bb05f7b0f 100644 --- a/app/services/api/v1/projects/tags/delete_service.rb +++ b/app/services/api/v1/projects/tags/delete_service.rb @@ -31,7 +31,12 @@ class Api::V1::Projects::Tags::DeleteService < ApplicationService end def excute_data_to_gitea - @gitea_data = $gitea_client.delete_repos_tags_by_owner_repo_tag(owner, repo, tag_name, {query: request_params}) rescue nil + begin + @gitea_data = $gitea_client.delete_repos_tags_by_owner_repo_tag(owner, repo, tag_name, {query: request_params}) rescue nil + rescue => e + raise Error, '请先删除发行版!' if e.to_s.include?("409") + raise Error, '删除标签失败!' + end end def check_tag_exist diff --git a/app/views/api/v1/projects/tags/index.json.jbuilder b/app/views/api/v1/projects/tags/index.json.jbuilder index 3c6f2d4a7..207289041 100644 --- a/app/views/api/v1/projects/tags/index.json.jbuilder +++ b/app/views/api/v1/projects/tags/index.json.jbuilder @@ -1,4 +1,5 @@ json.total_count @result_object[:total_data].to_i json.tags @result_object[:data].each do |tag| json.partial! "api/v1/projects/tags/simple_gitea_index_detail", tag: tag + json.has_release @release_tags.blank? ? false : @release_tags.include?(tag['name']) end \ No newline at end of file From 8c8925f3aed09735e2a2f5d99f161007ebd092db Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 7 Feb 2023 10:39:25 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/api/v1/projects/tags/delete_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/api/v1/projects/tags/delete_service.rb b/app/services/api/v1/projects/tags/delete_service.rb index bb05f7b0f..492898b53 100644 --- a/app/services/api/v1/projects/tags/delete_service.rb +++ b/app/services/api/v1/projects/tags/delete_service.rb @@ -32,7 +32,7 @@ class Api::V1::Projects::Tags::DeleteService < ApplicationService def excute_data_to_gitea begin - @gitea_data = $gitea_client.delete_repos_tags_by_owner_repo_tag(owner, repo, tag_name, {query: request_params}) rescue nil + @gitea_data = $gitea_client.delete_repos_tags_by_owner_repo_tag(owner, repo, tag_name, {query: request_params}) rescue => e raise Error, '请先删除发行版!' if e.to_s.include?("409") raise Error, '删除标签失败!' From f0750333f92bcfadf3a5438bafec6cc276a69a20 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 8 Feb 2023 16:57:42 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 45a83fd28..4f0f76fcd 100644 --- a/Gemfile +++ b/Gemfile @@ -139,4 +139,4 @@ gem 'doorkeeper' gem 'doorkeeper-jwt' -gem 'gitea-client', '~> 0.11.5' \ No newline at end of file +gem 'gitea-client', '~> 0.11.6' \ No newline at end of file