From 8e9c2232b08e741b293a0acab3616cd803ecb0d5 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 16 Jan 2023 18:05:27 +0800 Subject: [PATCH 01/46] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=96=B0?= =?UTF-8?q?=E7=89=88gitea=E8=B7=AF=E7=94=B1=E8=AF=B7=E6=B1=82=E5=9C=B0?= =?UTF-8?q?=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- Gemfile.lock | 42 +++++++++++++++++-- app/services/gitea/client_service.rb | 32 +++++++------- app/services/gitea/hooks/create_service.rb | 2 +- .../gitea/organization/create_service.rb | 2 +- .../gitea/organization/update_service.rb | 2 +- .../gitea/pull_request/commits_service.rb | 2 +- .../gitea/pull_request/files_service.rb | 2 +- .../gitea/pull_request/get_service.rb | 2 +- .../repository/branches/list_name_service.rb | 2 +- .../repository/branches/list_slice_service.rb | 2 +- .../repository/commits/compare_service.rb | 2 +- .../repository/commits/file_list_service.rb | 2 +- .../gitea/repository/commits/get_service.rb | 2 +- .../repository/commits/list_slice_service.rb | 2 +- .../repository/contributors/get_service.rb | 2 +- .../gitea/repository/entries/get_service.rb | 2 +- .../gitea/repository/entries/list_service.rb | 2 +- .../gitea/repository/files/get_service.rb | 2 +- .../get_branch_and_tag_total_num_service.rb | 2 +- .../gitea/repository/readme/dir_service.rb | 2 +- .../gitea/repository/readme/get_service.rb | 2 +- .../repository/tags/list_name_service.rb | 2 +- .../gitea/repository/tags/list_service.rb | 2 +- .../gitea/repository/transfer_service.rb | 2 +- .../repository/webhooks/tasks_service.rb | 2 +- app/services/gitea/user/headmap_service.rb | 2 +- app/services/gitea/user/update_service.rb | 2 +- app/services/gitea/versions/create_service.rb | 2 +- app/services/gitea/versions/get_service.rb | 2 +- app/services/gitea/versions/list_service.rb | 2 +- app/services/gitea/versions/update_service.rb | 2 +- config/configuration.yml.example | 1 + 33 files changed, 88 insertions(+), 47 deletions(-) diff --git a/Gemfile b/Gemfile index 0645fa72c..621ca4d0d 100644 --- a/Gemfile +++ b/Gemfile @@ -8,7 +8,7 @@ gem 'puma', '~> 3.11' gem 'sass-rails', '~> 5.0' gem 'uglifier', '>= 1.3.0' -# gem 'coffee-rails', '~> 4.2' +# gem 'coffee-rails', '~> 4.2'[p-qwa9aq] gem 'turbolinks', '~> 5' gem 'jbuilder', '~> 2.5' gem 'groupdate', '~> 4.1.0' diff --git a/Gemfile.lock b/Gemfile.lock index e27c504aa..0001f2321 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -106,6 +106,8 @@ GEM activerecord (>= 3.1.0, < 7) diff-lcs (1.3) diffy (3.3.0) + domain_name (0.5.20190701) + unf (>= 0.0.5, < 1.0.0) doorkeeper (5.5.1) railties (>= 5) doorkeeper-jwt (0.4.1) @@ -127,12 +129,14 @@ GEM execjs (2.7.0) faraday (0.15.4) multipart-post (>= 1.2, < 3) - ffi (1.12.2) + ffi (1.15.5) font-awesome-sass (4.7.0) sass (>= 3.2) fugit (1.4.1) et-orbi (~> 1.1, >= 1.1.8) raabro (~> 1.4) + gitea-client (0.11.1) + rest-client (~> 2.1.0) globalid (0.4.2) activesupport (>= 4.2.0) grape-entity (0.7.1) @@ -143,6 +147,9 @@ GEM harmonious_dictionary (0.0.1) hashie (3.6.0) htmlentities (4.3.4) + http-accept (1.7.0) + http-cookie (1.0.5) + domain_name (~> 0.5) i18n (1.8.2) concurrent-ruby (~> 1.0) io-like (0.3.1) @@ -180,6 +187,9 @@ GEM mimemagic (~> 0.3.2) maruku (0.7.3) method_source (0.9.2) + mime-types (3.4.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2022.0105) mimemagic (0.3.10) nokogiri (~> 1) rake @@ -193,6 +203,7 @@ GEM mustermann (1.1.1) ruby2_keywords (~> 0.0.1) mysql2 (0.5.3) + netrc (0.11.0) nio4r (2.5.2) nokogiri (1.10.8) mini_portile2 (~> 2.4.0) @@ -209,9 +220,21 @@ GEM addressable (~> 2.3) nokogiri (~> 1.5) omniauth (~> 1.2) + omniauth-gitee (1.0.0) + omniauth (>= 1.5, < 3.0) + omniauth-oauth2 (>= 1.4.0, < 2.0) + omniauth-github (1.4.0) + omniauth (~> 1.5) + omniauth-oauth2 (>= 1.4.0, < 2.0) omniauth-oauth2 (1.6.0) oauth2 (~> 1.1) omniauth (~> 1.9) + omniauth-rails_csrf_protection (0.1.2) + actionpack (>= 4.2) + omniauth (>= 1.3.1) + omniauth-wechat-oauth2 (0.2.2) + omniauth (>= 1.3.2) + omniauth-oauth2 (>= 1.1.1) parallel (1.19.1) parser (2.7.1.1) ast (~> 2.4.0) @@ -292,6 +315,11 @@ GEM regexp_parser (1.7.0) request_store (1.5.0) rack (>= 1.4) + rest-client (2.1.0) + http-accept (>= 1.7.0, < 2.0) + http-cookie (>= 1.0.2, < 2.0) + mime-types (>= 1.16, < 4.0) + netrc (~> 0.8) reverse_markdown (1.4.0) nokogiri roo (2.8.3) @@ -346,7 +374,7 @@ GEM sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) tilt (>= 1.1, < 3) - sassc (2.2.1) + sassc (2.4.0) ffi (~> 1.9) sassc-rails (2.1.2) railties (>= 4.0.0) @@ -418,6 +446,9 @@ GEM thread_safe (~> 0.1) uglifier (4.2.0) execjs (>= 0.3.0, < 3) + unf (0.1.4) + unf_ext + unf_ext (0.0.8.2) unicode-display_width (1.6.1) web-console (3.7.0) actionview (>= 5.0) @@ -459,6 +490,7 @@ DEPENDENCIES enumerize faraday (~> 0.15.4) font-awesome-sass (= 4.7.0) + gitea-client (~> 0.11.1) grape-entity (~> 0.7.1) groupdate (~> 4.1.0) harmonious_dictionary (~> 0.0.1) @@ -472,7 +504,11 @@ DEPENDENCIES oauth2 omniauth (~> 1.9.0) omniauth-cas + omniauth-gitee (~> 1.0.0) + omniauth-github omniauth-oauth2 (~> 1.6.0) + omniauth-rails_csrf_protection + omniauth-wechat-oauth2 parallel (~> 1.19, >= 1.19.1) pdfkit prettier @@ -512,4 +548,4 @@ DEPENDENCIES wkhtmltopdf-binary BUNDLED WITH - 2.1.4 + 2.3.26 diff --git a/app/services/gitea/client_service.rb b/app/services/gitea/client_service.rb index e2bd9d491..fae4ae27e 100644 --- a/app/services/gitea/client_service.rb +++ b/app/services/gitea/client_service.rb @@ -18,19 +18,19 @@ class Gitea::ClientService < ApplicationService # token: {}, # data: {} # } - def post(url, params={}) + def post(url, params={}, is_hat=false) puts "[gitea] request params: #{params}" auth_token = authen_params(params[:token]) conn(auth_token).post do |req| - req.url full_url(url) + req.url full_url(url, "post", is_hat) req.body = params[:data].to_json end end - def get(url, params={}) + def get(url, params={}, is_hat = false) auth_token = authen_params(params[:token]) conn(auth_token).get do |req| - req.url full_url(url, 'get') + req.url full_url(url, 'get', is_hat) params.except(:token).each_pair do |key, value| req.params["#{key}"] = value end @@ -41,27 +41,27 @@ class Gitea::ClientService < ApplicationService # end #=> 响应头 end - def delete(url, params={}) + def delete(url, params={}, is_hat = false) auth_token = authen_params(params[:token]) conn(auth_token).delete do |req| - req.url full_url(url) + req.url full_url(url, "delete", is_hat) req.body = params[:data].to_json end end - def patch(url, params={}) + def patch(url, params={}, is_hat=false) puts "[gitea] request params: #{params}" auth_token = authen_params(params[:token]) conn(auth_token).patch do |req| - req.url full_url(url) + req.url full_url(url, 'patch', is_hat) req.body = params[:data].to_json end end - def put(url, params={}) + def put(url, params={}, is_hat=false) puts "[gitea] put request params: #{params}" conn(authen_params(params[:token])).put do |req| - req.url full_url(url) + req.url full_url(url, "put", is_hat) req.body = params[:data].to_json end end @@ -99,16 +99,20 @@ class Gitea::ClientService < ApplicationService GiteaService.gitea_config[:base_url] end + def hat_base_url + GiteaService.gitea_config[:hat_base_url] + end + def domain GiteaService.gitea_config[:domain] end - def api_url - [domain, base_url].join('') + def api_url(is_hat=false) + is_hat ? [domain, hat_base_url].join('') : [domain, base_url].join('') end - def full_url(api_rest, action='post') - url = [api_url, api_rest].join('').freeze + def full_url(api_rest, action='post', is_hat=false) + url = [api_url(is_hat), api_rest].join('').freeze url = action === 'get' ? url : URI.escape(url) url = URI.escape(url) unless url.ascii_only? puts "[gitea] request url: #{url}" diff --git a/app/services/gitea/hooks/create_service.rb b/app/services/gitea/hooks/create_service.rb index 6b65a6860..8b8d7f2c3 100644 --- a/app/services/gitea/hooks/create_service.rb +++ b/app/services/gitea/hooks/create_service.rb @@ -24,7 +24,7 @@ class Gitea::Hooks::CreateService < Gitea::ClientService end def call - response = post(url, params) + response = post(url, params, true) render_201_response(response) end diff --git a/app/services/gitea/organization/create_service.rb b/app/services/gitea/organization/create_service.rb index 4da1720cc..6f4c3d4f2 100644 --- a/app/services/gitea/organization/create_service.rb +++ b/app/services/gitea/organization/create_service.rb @@ -7,7 +7,7 @@ class Gitea::Organization::CreateService < Gitea::ClientService end def call - response = post(url, request_params) + response = post(url, request_params, true) render_status(response) end diff --git a/app/services/gitea/organization/update_service.rb b/app/services/gitea/organization/update_service.rb index 963099ad9..7a0fd1eec 100644 --- a/app/services/gitea/organization/update_service.rb +++ b/app/services/gitea/organization/update_service.rb @@ -8,7 +8,7 @@ class Gitea::Organization::UpdateService < Gitea::ClientService end def call - response = patch(url, request_params) + response = patch(url, request_params, true) render_status(response) end diff --git a/app/services/gitea/pull_request/commits_service.rb b/app/services/gitea/pull_request/commits_service.rb index dc2877eba..f85edd296 100644 --- a/app/services/gitea/pull_request/commits_service.rb +++ b/app/services/gitea/pull_request/commits_service.rb @@ -16,7 +16,7 @@ class Gitea::PullRequest::CommitsService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_result(response) end diff --git a/app/services/gitea/pull_request/files_service.rb b/app/services/gitea/pull_request/files_service.rb index f7a2bd750..a5c2cf0d8 100644 --- a/app/services/gitea/pull_request/files_service.rb +++ b/app/services/gitea/pull_request/files_service.rb @@ -17,7 +17,7 @@ class Gitea::PullRequest::FilesService < Gitea::ClientService end def call - response = get(url, params.merge(token: token)) + response = get(url, params.merge(token: token), true) render_result(response) end diff --git a/app/services/gitea/pull_request/get_service.rb b/app/services/gitea/pull_request/get_service.rb index f9a35fdca..bd1fd8957 100644 --- a/app/services/gitea/pull_request/get_service.rb +++ b/app/services/gitea/pull_request/get_service.rb @@ -12,7 +12,7 @@ class Gitea::PullRequest::GetService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_result(response) end diff --git a/app/services/gitea/repository/branches/list_name_service.rb b/app/services/gitea/repository/branches/list_name_service.rb index c005c8359..84f6d3a4c 100644 --- a/app/services/gitea/repository/branches/list_name_service.rb +++ b/app/services/gitea/repository/branches/list_name_service.rb @@ -8,7 +8,7 @@ class Gitea::Repository::Branches::ListNameService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_200_response(response) end diff --git a/app/services/gitea/repository/branches/list_slice_service.rb b/app/services/gitea/repository/branches/list_slice_service.rb index 6b643831a..e04a4b6e6 100644 --- a/app/services/gitea/repository/branches/list_slice_service.rb +++ b/app/services/gitea/repository/branches/list_slice_service.rb @@ -7,7 +7,7 @@ class Gitea::Repository::Branches::ListSliceService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_200_response(response) end diff --git a/app/services/gitea/repository/commits/compare_service.rb b/app/services/gitea/repository/commits/compare_service.rb index 502f6ce90..bdfd4ca3d 100644 --- a/app/services/gitea/repository/commits/compare_service.rb +++ b/app/services/gitea/repository/commits/compare_service.rb @@ -14,7 +14,7 @@ class Gitea::Repository::Commits::CompareService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_status(response) end diff --git a/app/services/gitea/repository/commits/file_list_service.rb b/app/services/gitea/repository/commits/file_list_service.rb index b1606a0f3..77a193475 100644 --- a/app/services/gitea/repository/commits/file_list_service.rb +++ b/app/services/gitea/repository/commits/file_list_service.rb @@ -14,7 +14,7 @@ class Gitea::Repository::Commits::FileListService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_result(response) end diff --git a/app/services/gitea/repository/commits/get_service.rb b/app/services/gitea/repository/commits/get_service.rb index d497f1e4f..a8fc67235 100644 --- a/app/services/gitea/repository/commits/get_service.rb +++ b/app/services/gitea/repository/commits/get_service.rb @@ -14,7 +14,7 @@ class Gitea::Repository::Commits::GetService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_status(response) end diff --git a/app/services/gitea/repository/commits/list_slice_service.rb b/app/services/gitea/repository/commits/list_slice_service.rb index 04f45f55b..d31cf2bcd 100644 --- a/app/services/gitea/repository/commits/list_slice_service.rb +++ b/app/services/gitea/repository/commits/list_slice_service.rb @@ -13,7 +13,7 @@ class Gitea::Repository::Commits::ListSliceService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_result(response) end diff --git a/app/services/gitea/repository/contributors/get_service.rb b/app/services/gitea/repository/contributors/get_service.rb index 1ee1c3955..e5ad32e38 100644 --- a/app/services/gitea/repository/contributors/get_service.rb +++ b/app/services/gitea/repository/contributors/get_service.rb @@ -7,7 +7,7 @@ class Gitea::Repository::Contributors::GetService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_status(response) end diff --git a/app/services/gitea/repository/entries/get_service.rb b/app/services/gitea/repository/entries/get_service.rb index f8ac27543..f8e7b9451 100644 --- a/app/services/gitea/repository/entries/get_service.rb +++ b/app/services/gitea/repository/entries/get_service.rb @@ -13,7 +13,7 @@ class Gitea::Repository::Entries::GetService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_result(response) end diff --git a/app/services/gitea/repository/entries/list_service.rb b/app/services/gitea/repository/entries/list_service.rb index dd62a1147..df9fdb1e3 100644 --- a/app/services/gitea/repository/entries/list_service.rb +++ b/app/services/gitea/repository/entries/list_service.rb @@ -10,7 +10,7 @@ class Gitea::Repository::Entries::ListService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_result(response) end diff --git a/app/services/gitea/repository/files/get_service.rb b/app/services/gitea/repository/files/get_service.rb index e5b96e7ba..2a1589821 100644 --- a/app/services/gitea/repository/files/get_service.rb +++ b/app/services/gitea/repository/files/get_service.rb @@ -10,7 +10,7 @@ class Gitea::Repository::Files::GetService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_status(response) end diff --git a/app/services/gitea/repository/get_branch_and_tag_total_num_service.rb b/app/services/gitea/repository/get_branch_and_tag_total_num_service.rb index 0b8a52467..f0fd2557b 100644 --- a/app/services/gitea/repository/get_branch_and_tag_total_num_service.rb +++ b/app/services/gitea/repository/get_branch_and_tag_total_num_service.rb @@ -11,7 +11,7 @@ module Gitea end def call - response = get(url, params) + response = get(url, params, true) render_result(response) end diff --git a/app/services/gitea/repository/readme/dir_service.rb b/app/services/gitea/repository/readme/dir_service.rb index 587fb5d55..830cceaa8 100644 --- a/app/services/gitea/repository/readme/dir_service.rb +++ b/app/services/gitea/repository/readme/dir_service.rb @@ -10,7 +10,7 @@ class Gitea::Repository::Readme::DirService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) status, message, body = render_response(response) json_format(status, message, body) end diff --git a/app/services/gitea/repository/readme/get_service.rb b/app/services/gitea/repository/readme/get_service.rb index 48e2d4475..5af86b5ae 100644 --- a/app/services/gitea/repository/readme/get_service.rb +++ b/app/services/gitea/repository/readme/get_service.rb @@ -15,7 +15,7 @@ class Gitea::Repository::Readme::GetService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) status, message, body = render_response(response) json_format(status, message, body) end diff --git a/app/services/gitea/repository/tags/list_name_service.rb b/app/services/gitea/repository/tags/list_name_service.rb index 0857ca11c..ac81c9d75 100644 --- a/app/services/gitea/repository/tags/list_name_service.rb +++ b/app/services/gitea/repository/tags/list_name_service.rb @@ -8,7 +8,7 @@ class Gitea::Repository::Tags::ListNameService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_200_response(response) end diff --git a/app/services/gitea/repository/tags/list_service.rb b/app/services/gitea/repository/tags/list_service.rb index 0f8158b3e..958287179 100644 --- a/app/services/gitea/repository/tags/list_service.rb +++ b/app/services/gitea/repository/tags/list_service.rb @@ -11,7 +11,7 @@ class Gitea::Repository::Tags::ListService < Gitea::ClientService end def call - response = get(url, request_params) + response = get(url, request_params, true) render_result(response) end diff --git a/app/services/gitea/repository/transfer_service.rb b/app/services/gitea/repository/transfer_service.rb index 358ac9421..40cf5d1bf 100644 --- a/app/services/gitea/repository/transfer_service.rb +++ b/app/services/gitea/repository/transfer_service.rb @@ -9,7 +9,7 @@ class Gitea::Repository::TransferService < Gitea::ClientService end def call - response = post(url, request_params) + response = post(url, request_params, true) render_status(response) end diff --git a/app/services/gitea/repository/webhooks/tasks_service.rb b/app/services/gitea/repository/webhooks/tasks_service.rb index e4c62edb4..be5a59290 100644 --- a/app/services/gitea/repository/webhooks/tasks_service.rb +++ b/app/services/gitea/repository/webhooks/tasks_service.rb @@ -11,7 +11,7 @@ class Gitea::Repository::Webhooks::TasksService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_response(response) end diff --git a/app/services/gitea/user/headmap_service.rb b/app/services/gitea/user/headmap_service.rb index 611a8b9d0..d066d0f16 100644 --- a/app/services/gitea/user/headmap_service.rb +++ b/app/services/gitea/user/headmap_service.rb @@ -8,7 +8,7 @@ class Gitea::User::HeadmapService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_response(response) end diff --git a/app/services/gitea/user/update_service.rb b/app/services/gitea/user/update_service.rb index 9826c7ed0..24660158b 100644 --- a/app/services/gitea/user/update_service.rb +++ b/app/services/gitea/user/update_service.rb @@ -24,7 +24,7 @@ class Gitea::User::UpdateService < Gitea::ClientService end def call - patch(url, data_params) + patch(url, data_params, true) end private diff --git a/app/services/gitea/versions/create_service.rb b/app/services/gitea/versions/create_service.rb index 04fed00f2..4424fc276 100644 --- a/app/services/gitea/versions/create_service.rb +++ b/app/services/gitea/versions/create_service.rb @@ -18,7 +18,7 @@ class Gitea::Versions::CreateService < Gitea::ClientService end def call - response = post(url, request_params) + response = post(url, request_params, true) render_status(response) end diff --git a/app/services/gitea/versions/get_service.rb b/app/services/gitea/versions/get_service.rb index b3c6cf9cc..2af78ab28 100644 --- a/app/services/gitea/versions/get_service.rb +++ b/app/services/gitea/versions/get_service.rb @@ -12,7 +12,7 @@ class Gitea::Versions::GetService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_result(response) end diff --git a/app/services/gitea/versions/list_service.rb b/app/services/gitea/versions/list_service.rb index 5d160fc3e..3505fa254 100644 --- a/app/services/gitea/versions/list_service.rb +++ b/app/services/gitea/versions/list_service.rb @@ -11,7 +11,7 @@ class Gitea::Versions::ListService < Gitea::ClientService end def call - response = get(url, params) + response = get(url, params, true) render_result(response) end diff --git a/app/services/gitea/versions/update_service.rb b/app/services/gitea/versions/update_service.rb index a4c9acfc2..c07620bc8 100644 --- a/app/services/gitea/versions/update_service.rb +++ b/app/services/gitea/versions/update_service.rb @@ -19,7 +19,7 @@ class Gitea::Versions::UpdateService < Gitea::ClientService end def call - patch(url, request_params) + patch(url, request_params, true) end private diff --git a/config/configuration.yml.example b/config/configuration.yml.example index f056dee1b..75d5eb5c0 100644 --- a/config/configuration.yml.example +++ b/config/configuration.yml.example @@ -55,6 +55,7 @@ default: &default access_key_secret: '' domain: 'https://testgit.trustie.net' base_url: '/api/v1' + hat_base_url: '/api/hat' accelerator: access_key_id: '' access_key_secret: '' From 2326bde96d45362306e42548eaed3b1e5e061e74 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 16 Jan 2023 18:10:13 +0800 Subject: [PATCH 02/46] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9Agemfile?= =?UTF-8?q?=E5=9B=9E=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- Gemfile.lock | 42 +++--------------------------------------- 2 files changed, 4 insertions(+), 40 deletions(-) diff --git a/Gemfile b/Gemfile index 621ca4d0d..0645fa72c 100644 --- a/Gemfile +++ b/Gemfile @@ -8,7 +8,7 @@ gem 'puma', '~> 3.11' gem 'sass-rails', '~> 5.0' gem 'uglifier', '>= 1.3.0' -# gem 'coffee-rails', '~> 4.2'[p-qwa9aq] +# gem 'coffee-rails', '~> 4.2' gem 'turbolinks', '~> 5' gem 'jbuilder', '~> 2.5' gem 'groupdate', '~> 4.1.0' diff --git a/Gemfile.lock b/Gemfile.lock index 0001f2321..e27c504aa 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -106,8 +106,6 @@ GEM activerecord (>= 3.1.0, < 7) diff-lcs (1.3) diffy (3.3.0) - domain_name (0.5.20190701) - unf (>= 0.0.5, < 1.0.0) doorkeeper (5.5.1) railties (>= 5) doorkeeper-jwt (0.4.1) @@ -129,14 +127,12 @@ GEM execjs (2.7.0) faraday (0.15.4) multipart-post (>= 1.2, < 3) - ffi (1.15.5) + ffi (1.12.2) font-awesome-sass (4.7.0) sass (>= 3.2) fugit (1.4.1) et-orbi (~> 1.1, >= 1.1.8) raabro (~> 1.4) - gitea-client (0.11.1) - rest-client (~> 2.1.0) globalid (0.4.2) activesupport (>= 4.2.0) grape-entity (0.7.1) @@ -147,9 +143,6 @@ GEM harmonious_dictionary (0.0.1) hashie (3.6.0) htmlentities (4.3.4) - http-accept (1.7.0) - http-cookie (1.0.5) - domain_name (~> 0.5) i18n (1.8.2) concurrent-ruby (~> 1.0) io-like (0.3.1) @@ -187,9 +180,6 @@ GEM mimemagic (~> 0.3.2) maruku (0.7.3) method_source (0.9.2) - mime-types (3.4.1) - mime-types-data (~> 3.2015) - mime-types-data (3.2022.0105) mimemagic (0.3.10) nokogiri (~> 1) rake @@ -203,7 +193,6 @@ GEM mustermann (1.1.1) ruby2_keywords (~> 0.0.1) mysql2 (0.5.3) - netrc (0.11.0) nio4r (2.5.2) nokogiri (1.10.8) mini_portile2 (~> 2.4.0) @@ -220,21 +209,9 @@ GEM addressable (~> 2.3) nokogiri (~> 1.5) omniauth (~> 1.2) - omniauth-gitee (1.0.0) - omniauth (>= 1.5, < 3.0) - omniauth-oauth2 (>= 1.4.0, < 2.0) - omniauth-github (1.4.0) - omniauth (~> 1.5) - omniauth-oauth2 (>= 1.4.0, < 2.0) omniauth-oauth2 (1.6.0) oauth2 (~> 1.1) omniauth (~> 1.9) - omniauth-rails_csrf_protection (0.1.2) - actionpack (>= 4.2) - omniauth (>= 1.3.1) - omniauth-wechat-oauth2 (0.2.2) - omniauth (>= 1.3.2) - omniauth-oauth2 (>= 1.1.1) parallel (1.19.1) parser (2.7.1.1) ast (~> 2.4.0) @@ -315,11 +292,6 @@ GEM regexp_parser (1.7.0) request_store (1.5.0) rack (>= 1.4) - rest-client (2.1.0) - http-accept (>= 1.7.0, < 2.0) - http-cookie (>= 1.0.2, < 2.0) - mime-types (>= 1.16, < 4.0) - netrc (~> 0.8) reverse_markdown (1.4.0) nokogiri roo (2.8.3) @@ -374,7 +346,7 @@ GEM sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) tilt (>= 1.1, < 3) - sassc (2.4.0) + sassc (2.2.1) ffi (~> 1.9) sassc-rails (2.1.2) railties (>= 4.0.0) @@ -446,9 +418,6 @@ GEM thread_safe (~> 0.1) uglifier (4.2.0) execjs (>= 0.3.0, < 3) - unf (0.1.4) - unf_ext - unf_ext (0.0.8.2) unicode-display_width (1.6.1) web-console (3.7.0) actionview (>= 5.0) @@ -490,7 +459,6 @@ DEPENDENCIES enumerize faraday (~> 0.15.4) font-awesome-sass (= 4.7.0) - gitea-client (~> 0.11.1) grape-entity (~> 0.7.1) groupdate (~> 4.1.0) harmonious_dictionary (~> 0.0.1) @@ -504,11 +472,7 @@ DEPENDENCIES oauth2 omniauth (~> 1.9.0) omniauth-cas - omniauth-gitee (~> 1.0.0) - omniauth-github omniauth-oauth2 (~> 1.6.0) - omniauth-rails_csrf_protection - omniauth-wechat-oauth2 parallel (~> 1.19, >= 1.19.1) pdfkit prettier @@ -548,4 +512,4 @@ DEPENDENCIES wkhtmltopdf-binary BUNDLED WITH - 2.3.26 + 2.1.4 From ad9c5fe0fbbba5325ff900fa83861494d48a1028 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 31 Jan 2023 10:04:07 +0800 Subject: [PATCH 03/46] =?UTF-8?q?=E6=9B=B4=E6=96=B0=EF=BC=9Areadme?= =?UTF-8?q?=E4=B8=ADgitea=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1bcd05cce..a1cadd1cc 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,7 @@ gitea: access_key_secret: 'password' domain: 'http://www.gitea.example.com' base_url: '/api/v1' + hat_base_url: '/api/hat' ``` #### 6. 安装redis环境 From 718457888d846f94713d778a5f4de210478500e7 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 31 Jan 2023 10:55:55 +0800 Subject: [PATCH 04/46] =?UTF-8?q?=E6=9B=B4=E6=96=B0=EF=BC=9Aclient?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E4=BB=A5=E5=8F=8Agitea=5Fclient=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=96=87=E4=BB=B6=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- app/services/api/v1/projects/blame_service.rb | 2 +- .../api/v1/projects/branches/all_list_service.rb | 2 +- .../api/v1/projects/branches/create_service.rb | 4 ++-- .../api/v1/projects/code_stats/list_service.rb | 2 +- app/services/api/v1/projects/commits/diff_service.rb | 2 +- .../api/v1/projects/contents/batch_create_service.rb | 4 ++-- app/services/api/v1/projects/get_service.rb | 2 +- app/services/api/v1/projects/pulls/get_service.rb | 2 +- .../v1/projects/pulls/versions/get_diff_service.rb | 2 +- .../api/v1/projects/pulls/versions/list_service.rb | 2 +- .../api/v1/projects/webhooks/create_service.rb | 2 +- .../api/v1/projects/webhooks/hooktasks_service.rb | 2 +- app/services/projects/transfer_service.rb | 2 +- config/initializers/gitea_client.rb | 11 ++++++++++- 15 files changed, 26 insertions(+), 17 deletions(-) diff --git a/Gemfile b/Gemfile index 0645fa72c..e0b2bcd12 100644 --- a/Gemfile +++ b/Gemfile @@ -140,4 +140,4 @@ gem 'doorkeeper' gem 'doorkeeper-jwt' -gem 'gitea-client', '~> 0.11.6' \ No newline at end of file +gem 'gitea-client', '~> 1.2.1' diff --git a/app/services/api/v1/projects/blame_service.rb b/app/services/api/v1/projects/blame_service.rb index d419fec14..cdd5739b8 100644 --- a/app/services/api/v1/projects/blame_service.rb +++ b/app/services/api/v1/projects/blame_service.rb @@ -32,7 +32,7 @@ class Api::V1::Projects::BlameService < ApplicationService end def load_gitea_data - @gitea_data = $gitea_client.get_repos_blame_by_owner_repo(owner, repo, {query: request_params}) + @gitea_data = $gitea_hat_client.get_repos_blame_by_owner_repo(owner, repo, {query: request_params}) raise Error, '获取项目blame失败!' unless @gitea_data.is_a?(Hash) end end \ No newline at end of file diff --git a/app/services/api/v1/projects/branches/all_list_service.rb b/app/services/api/v1/projects/branches/all_list_service.rb index 182495cdf..4d31f6534 100644 --- a/app/services/api/v1/projects/branches/all_list_service.rb +++ b/app/services/api/v1/projects/branches/all_list_service.rb @@ -24,7 +24,7 @@ class Api::V1::Projects::Branches::AllListService < ApplicationService end def load_gitea_data - @gitea_data = $gitea_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil + @gitea_data = $gitea_hat_client.get_repos_branch_name_set_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/services/api/v1/projects/branches/create_service.rb b/app/services/api/v1/projects/branches/create_service.rb index eae3779f8..0f2ec1d5e 100644 --- a/app/services/api/v1/projects/branches/create_service.rb +++ b/app/services/api/v1/projects/branches/create_service.rb @@ -43,8 +43,8 @@ class Api::V1::Projects::Branches::CreateService < ApplicationService 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 + def check_new_branch_exist + result = $gitea_hat_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?(@old_branch_name) raise Error, '新分支已存在!' if result['branch_name'].include?(@new_branch_name) diff --git a/app/services/api/v1/projects/code_stats/list_service.rb b/app/services/api/v1/projects/code_stats/list_service.rb index a5e330e21..0831bc722 100644 --- a/app/services/api/v1/projects/code_stats/list_service.rb +++ b/app/services/api/v1/projects/code_stats/list_service.rb @@ -28,7 +28,7 @@ class Api::V1::Projects::CodeStats::ListService < ApplicationService end def load_gitea_data - @gitea_data = $gitea_client.get_repos_code_stats_by_owner_repo(owner, repo, {query: request_params}) rescue nil + @gitea_data = $gitea_hat_client.get_repos_code_stats_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/services/api/v1/projects/commits/diff_service.rb b/app/services/api/v1/projects/commits/diff_service.rb index 71dd155a0..3de96fbaa 100644 --- a/app/services/api/v1/projects/commits/diff_service.rb +++ b/app/services/api/v1/projects/commits/diff_service.rb @@ -29,7 +29,7 @@ class Api::V1::Projects::Commits::DiffService < ApplicationService end def load_gitea_data - @gitea_data = $gitea_client.get_repos_commits_diff_by_owner_repo_sha(owner, repo, sha, {query: request_params}) rescue nil + @gitea_data = $gitea_hat_client.get_repos_commits_diff_by_owner_repo_sha(owner, repo, sha, {query: request_params}) rescue nil raise Error, '获取提交对比失败!' unless @gitea_data.is_a?(Hash) 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 index 92bd30a99..7c514c376 100644 --- a/app/services/api/v1/projects/contents/batch_create_service.rb +++ b/app/services/api/v1/projects/contents/batch_create_service.rb @@ -78,12 +78,12 @@ class Api::V1::Projects::Contents::BatchCreateService < ApplicationService def excute_data_to_gitea puts request_body.to_json - @gitea_data = $gitea_client.post_repos_contents_batch_by_owner_repo(owner, repo, {body: request_body.to_json, query: request_params}) rescue nil + @gitea_data = $gitea_hat_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 + result = $gitea_hat_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? diff --git a/app/services/api/v1/projects/get_service.rb b/app/services/api/v1/projects/get_service.rb index ebb0d1cfa..480744bfc 100644 --- a/app/services/api/v1/projects/get_service.rb +++ b/app/services/api/v1/projects/get_service.rb @@ -45,6 +45,6 @@ class Api::V1::Projects::GetService < ApplicationService end def load_gitea_branch_tag_count - @gitea_branch_tag_count = $gitea_client.get_repos_branch_tag_count_by_owner_repo(owner, repo, {query: request_params}) rescue nil + @gitea_branch_tag_count = $gitea_hat_client.get_repos_branch_tag_count_by_owner_repo(owner, repo, {query: request_params}) rescue nil end end \ No newline at end of file diff --git a/app/services/api/v1/projects/pulls/get_service.rb b/app/services/api/v1/projects/pulls/get_service.rb index 3c1bba99b..f28881ae0 100644 --- a/app/services/api/v1/projects/pulls/get_service.rb +++ b/app/services/api/v1/projects/pulls/get_service.rb @@ -26,7 +26,7 @@ class Api::V1::Projects::Pulls::GetService < ApplicationService end def load_gitea_data - @gitea_data = $gitea_client.get_repos_pulls_by_owner_repo_index(owner, repo, index, {query: request_params}) + @gitea_data = $gitea_hat_client.get_repos_pulls_by_owner_repo_index(owner, repo, index, {query: request_params}) # raise Error, '获取合并请求失败!' unless @gitea_data.is_a?(Hash) end end \ No newline at end of file diff --git a/app/services/api/v1/projects/pulls/versions/get_diff_service.rb b/app/services/api/v1/projects/pulls/versions/get_diff_service.rb index 979bc33fb..1cae8c345 100644 --- a/app/services/api/v1/projects/pulls/versions/get_diff_service.rb +++ b/app/services/api/v1/projects/pulls/versions/get_diff_service.rb @@ -30,7 +30,7 @@ class Api::V1::Projects::Pulls::Versions::GetDiffService < ApplicationService end def load_gitea_data - @gitea_data = $gitea_client.get_repos_pulls_versions_diff_by_owner_repo_index_version_id(owner, repo, index, version_id, {query: request_params}) + @gitea_data = $gitea_hat_client.get_repos_pulls_versions_diff_by_owner_repo_index_version_id(owner, repo, index, version_id, {query: request_params}) raise Error, '获取合并请求版本diff失败!' unless @gitea_data.is_a?(Hash) end end \ No newline at end of file diff --git a/app/services/api/v1/projects/pulls/versions/list_service.rb b/app/services/api/v1/projects/pulls/versions/list_service.rb index ca88ff1f6..e9ae69c32 100644 --- a/app/services/api/v1/projects/pulls/versions/list_service.rb +++ b/app/services/api/v1/projects/pulls/versions/list_service.rb @@ -30,7 +30,7 @@ class Api::V1::Projects::Pulls::Versions::ListService < ApplicationService end def load_gitea_data - @gitea_data = $gitea_client.get_repos_pulls_versions_by_owner_repo_index(owner, repo, index, {query: request_params}) + @gitea_data = $gitea_hat_client.get_repos_pulls_versions_by_owner_repo_index(owner, repo, index, {query: request_params}) raise Error, '获取合并请求版本失败!' unless @gitea_data.is_a?(Hash) end end \ No newline at end of file diff --git a/app/services/api/v1/projects/webhooks/create_service.rb b/app/services/api/v1/projects/webhooks/create_service.rb index edc8b2263..cc9cf37f0 100644 --- a/app/services/api/v1/projects/webhooks/create_service.rb +++ b/app/services/api/v1/projects/webhooks/create_service.rb @@ -58,6 +58,6 @@ class Api::V1::Projects::Webhooks::CreateService < ApplicationService end def excute_data_to_gitea - @gitea_data = $gitea_client.post_repos_hooks_by_owner_repo(owner, repo, {body: request_body.to_json, query: request_params}) rescue nil + @gitea_data = $gitea_hat_client.post_repos_hooks_by_owner_repo(owner, repo, {body: request_body.to_json, query: request_params}) rescue nil end end \ No newline at end of file diff --git a/app/services/api/v1/projects/webhooks/hooktasks_service.rb b/app/services/api/v1/projects/webhooks/hooktasks_service.rb index 6be9c67c8..17ada9089 100644 --- a/app/services/api/v1/projects/webhooks/hooktasks_service.rb +++ b/app/services/api/v1/projects/webhooks/hooktasks_service.rb @@ -30,6 +30,6 @@ class Api::V1::Projects::Webhooks::ListService < ApplicationService end def load_gitea_data - @gitea_data = $gitea_client.get_repos_hooks_hooktasks_by_owner_repo(owner, repo, id, {query: request_params}) rescue nil + @gitea_data = $gitea_hat_client.get_repos_hooks_hooktasks_by_owner_repo(owner, repo, id, {query: request_params}) rescue nil end end \ No newline at end of file diff --git a/app/services/projects/transfer_service.rb b/app/services/projects/transfer_service.rb index 8ed58f8a7..07eab8981 100644 --- a/app/services/projects/transfer_service.rb +++ b/app/services/projects/transfer_service.rb @@ -51,7 +51,7 @@ class Projects::TransferService < ApplicationService def gitea_update_owner begin - @gitea_repo = $gitea_client.post_repos_transfer_by_owner_repo(owner&.login, project.identifier, {body: {new_owner: new_owner&.login}.to_json}) + @gitea_repo = $gitea_hat_client.post_repos_transfer_by_owner_repo(owner&.login, project.identifier, {body: {new_owner: new_owner&.login}.to_json}) # @gitea_repo = Gitea::Repository::TransferService.call(owner&.gitea_token, owner&.login, project.identifier, new_owner&.login) rescue Exception => e Rails.logger.info("##### Project transfer_service, gitea transfer error #{e}") diff --git a/config/initializers/gitea_client.rb b/config/initializers/gitea_client.rb index c909cebf4..15777ac30 100644 --- a/config/initializers/gitea_client.rb +++ b/config/initializers/gitea_client.rb @@ -7,5 +7,14 @@ $gitea_client = Gitea::Api::Client.new({ domain: gitea_config[:domain], base_url: gitea_config[:base_url], username: gitea_config[:access_key_id], - password: gitea_config[:access_key_secret] + password: gitea_config[:access_key_secret], + log_filepath: "log/gitea-client.log" +}) + +$gitea_hat_client = Gitea::Api::Hat::Client.new({ + domain: gitea_config[:domain], + hat_base_url: gitea_config[:hat_base_url], + username: gitea_config[:access_key_id], + password: gitea_config[:access_key_secret], + log_filepath: "log/gitea-client.log" }) \ No newline at end of file From 8463518adedd1f79a797fdf3c0fdf720eecc52d5 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 2 Feb 2023 15:31:38 +0800 Subject: [PATCH 05/46] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9Atags=E5=88=97?= =?UTF-8?q?=E8=A1=A8commiter=E6=9B=B4=E6=94=B9=E4=B8=BAcommitter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/repositories/tags.json.jbuilder | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/repositories/tags.json.jbuilder b/app/views/repositories/tags.json.jbuilder index 4f5bb4330..5e3c7e39e 100644 --- a/app/views/repositories/tags.json.jbuilder +++ b/app/views/repositories/tags.json.jbuilder @@ -14,10 +14,10 @@ json.tags @tags do |tag| 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.time_ago time_from_now(tag['commit']['committer']['date'].to_time) + json.created_at_unix tag['commit']['committer']['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! 'commit_author', user: render_cache_commit_author(tag['commit']['committer']), name: tag['commit']['committer']['name'] end json.author do json.partial! 'commit_author', user: render_cache_commit_author(tag['commit']['author']), name: tag['commit']['author']['name'] From 54b7cef1bd27b6eb7c1de042bf6b7c4a4541294d Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 17 Feb 2023 22:03:18 +0800 Subject: [PATCH 06/46] =?UTF-8?q?=E5=90=8C=E6=AD=A5develop=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E4=BB=A3=E7=A0=81=E5=90=8E=E6=9B=B4=E6=94=B9client?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- app/controllers/api/v1/projects/tags_controller.rb | 1 + app/services/api/v1/projects/branches/all_list_service.rb | 2 +- app/services/api/v1/projects/branches/create_service.rb | 8 ++++---- app/services/api/v1/projects/branches/delete_service.rb | 6 +++--- .../v1/projects/branches/update_default_branch_service.rb | 6 +++--- app/services/api/v1/projects/tags/delete_service.rb | 2 +- app/services/api/v1/projects/tags/list_service.rb | 2 +- .../projects/branches/_simple_gitea_detail.json.jbuilder | 4 ++-- .../tags/_simple_gitea_index_detail.json.jbuilder | 6 +++--- 10 files changed, 20 insertions(+), 19 deletions(-) diff --git a/Gemfile b/Gemfile index e0b2bcd12..1528d502b 100644 --- a/Gemfile +++ b/Gemfile @@ -140,4 +140,4 @@ gem 'doorkeeper' gem 'doorkeeper-jwt' -gem 'gitea-client', '~> 1.2.1' +gem 'gitea-client', '~> 1.3.1' diff --git a/app/controllers/api/v1/projects/tags_controller.rb b/app/controllers/api/v1/projects/tags_controller.rb index 06c3b1c8e..b87d48429 100644 --- a/app/controllers/api/v1/projects/tags_controller.rb +++ b/app/controllers/api/v1/projects/tags_controller.rb @@ -4,6 +4,7 @@ class Api::V1::Projects::TagsController < Api::V1::BaseController 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) + puts @result_object end before_action :require_operate_above, only: [:destroy] diff --git a/app/services/api/v1/projects/branches/all_list_service.rb b/app/services/api/v1/projects/branches/all_list_service.rb index 4d31f6534..9ca4ae7d0 100644 --- a/app/services/api/v1/projects/branches/all_list_service.rb +++ b/app/services/api/v1/projects/branches/all_list_service.rb @@ -25,6 +25,6 @@ class Api::V1::Projects::Branches::AllListService < ApplicationService def load_gitea_data @gitea_data = $gitea_hat_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil - raise Error, '获取所有分支失败!' unless @gitea_data.is_a?(Hash) + raise Error, '获取所有分支失败!' unless @gitea_data.is_a?(Array) end end \ No newline at end of file diff --git a/app/services/api/v1/projects/branches/create_service.rb b/app/services/api/v1/projects/branches/create_service.rb index 0f2ec1d5e..39964e402 100644 --- a/app/services/api/v1/projects/branches/create_service.rb +++ b/app/services/api/v1/projects/branches/create_service.rb @@ -43,10 +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_hat_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?(@old_branch_name) - raise Error, '新分支已存在!' if result['branch_name'].include?(@new_branch_name) + raise Error, '查询分支名称失败!' unless result.is_a?(Array) + raise Error, '旧分支不存在!' if !result.include?(@old_branch_name) + raise Error, '新分支已存在!' if result.include?(@new_branch_name) 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 79a6ba0db..28836c797 100644 --- a/app/services/api/v1/projects/branches/delete_service.rb +++ b/app/services/api/v1/projects/branches/delete_service.rb @@ -40,8 +40,8 @@ class Api::V1::Projects::Branches::DeleteService < ApplicationService 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) + result = $gitea_hat_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil + raise Error, '查询分支名称失败!' unless result.is_a?(Array) + raise Error, '分支不存在!' if !result.include?(@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 index 5c220aa5d..c79c33bd2 100644 --- a/app/services/api/v1/projects/branches/update_default_branch_service.rb +++ b/app/services/api/v1/projects/branches/update_default_branch_service.rb @@ -48,8 +48,8 @@ class Api::V1::Projects::Branches::UpdateDefaultBranchService < ApplicationServi 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) + result = $gitea_hat_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil + raise Error, '查询分支名称失败!' unless result.is_a?(Array) + raise Error, '新默认分支不存在!' if !result.include?(@new_default_branch) end end \ No newline at end of file diff --git a/app/services/api/v1/projects/tags/delete_service.rb b/app/services/api/v1/projects/tags/delete_service.rb index 492898b53..d0d317aa8 100644 --- a/app/services/api/v1/projects/tags/delete_service.rb +++ b/app/services/api/v1/projects/tags/delete_service.rb @@ -40,7 +40,7 @@ class Api::V1::Projects::Tags::DeleteService < ApplicationService end def check_tag_exist - result = $gitea_client.get_repos_tag_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil + result = $gitea_hat_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 diff --git a/app/services/api/v1/projects/tags/list_service.rb b/app/services/api/v1/projects/tags/list_service.rb index a7743fe00..9bf4701fc 100644 --- a/app/services/api/v1/projects/tags/list_service.rb +++ b/app/services/api/v1/projects/tags/list_service.rb @@ -30,7 +30,7 @@ class Api::V1::Projects::Tags::ListService < ApplicationService end def load_gitea_data - @gitea_data = $gitea_client.get_repos_tags_by_owner_repo(owner, repo, {query: request_params}) rescue nil + @gitea_data = $gitea_hat_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/branches/_simple_gitea_detail.json.jbuilder b/app/views/api/v1/projects/branches/_simple_gitea_detail.json.jbuilder index 6a35b782e..98890eba4 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 @@ -17,9 +17,9 @@ end 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_id branch['commit']['id'] json.commit_time_from_now time_from_now(branch['commit']['timestamp'].to_time) -json.commit_time branch['commit_time'] +json.commit_time branch['commit']['timestamp'] json.default_branch branch['default_branch'] json.http_url render_http_url(@project) json.zip_url render_zip_url(@owner, @project.repository, branch['name']) 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 b8ba28f85..460b56f56 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 @@ -12,10 +12,10 @@ if tag.present? && tag.is_a?(Hash) 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.time_ago time_from_now(tag['commit']['committer']['date'].to_time) + json.created_at_unix tag['commit']['committer']['date'].to_time.to_i json.committer do - json.partial! 'api/v1/users/commit_user', 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']['committer']), name: tag['commit']['committer']['name'] end json.author do json.partial! 'api/v1/users/commit_user', user: render_cache_commit_author(tag['commit']['author']), name: tag['commit']['author']['name'] From de1e931c2f442c9d6cb2b02427ae7aa07e52aa84 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 23 Feb 2023 11:38:16 +0800 Subject: [PATCH 07/46] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9A=E8=B4=A1?= =?UTF-8?q?=E7=8C=AE=E8=80=85=E8=8E=B7=E5=8F=96=E8=A7=84=E5=88=99=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E5=88=86=E6=94=AF=E5=88=97=E8=A1=A8=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=97=A7=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/repositories_controller.rb | 5 ++-- .../api/v1/projects/branches/list_service.rb | 13 ++++++---- .../repository/contributors/get_service.rb | 24 +++++++++++++++---- .../repositories/_contributor.json.jbuilder | 18 +++++++------- .../repositories/contributors.json.jbuilder | 2 +- 5 files changed, 42 insertions(+), 20 deletions(-) diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index e32b31017..e6fef78f0 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -166,8 +166,9 @@ class RepositoriesController < ApplicationController if params[:filepath].present? || @project.educoder? @contributors = [] else - result = Gitea::Repository::Contributors::GetService.call(@owner, @repository.identifier) - @contributors = result.is_a?(Hash) && result.key?(:status) ? [] : result + result = Gitea::Repository::Contributors::GetService.call(@owner, @repository.identifier, {page: params[:page], limit: params[:limit]}) + @total_count = result[:total_count] + @contributors = result.is_a?(Hash) ? result[:body] : [] end rescue @contributors = [] diff --git a/app/services/api/v1/projects/branches/list_service.rb b/app/services/api/v1/projects/branches/list_service.rb index e5c6fe442..f53dc1f49 100644 --- a/app/services/api/v1/projects/branches/list_service.rb +++ b/app/services/api/v1/projects/branches/list_service.rb @@ -1,7 +1,7 @@ class Api::V1::Projects::Branches::ListService < ApplicationService attr_accessor :project, :token, :owner, :repo, :name, :page, :limit - attr_accessor :gitea_data + attr_accessor :gitea_data, :gitea_repo_data def initialize(project, params, token=nil) @project = project @@ -16,6 +16,8 @@ class Api::V1::Projects::Branches::ListService < ApplicationService def call load_gitea_data + gitea_data["default_branch"] = gitea_repo_data["default_branch"] + gitea_data end @@ -32,9 +34,12 @@ class Api::V1::Projects::Branches::ListService < ApplicationService 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 + @gitea_data = $gitea_hat_client.get_repos_branches_by_owner_repo(owner, repo, {query: request_params}) rescue nil raise Error, '获取分支列表失败!' unless @gitea_data.is_a?(Hash) end + + def load_default_branch + @gitea_repo_data = $gitea_client.get_repos_by_owner_repo('yystopf', 'pig') rescue nil + raise Error, '获取仓库信息失败!' unless @gitea_data.is_a?(Hash) + end end \ No newline at end of file diff --git a/app/services/gitea/repository/contributors/get_service.rb b/app/services/gitea/repository/contributors/get_service.rb index e5ad32e38..fe9ed2463 100644 --- a/app/services/gitea/repository/contributors/get_service.rb +++ b/app/services/gitea/repository/contributors/get_service.rb @@ -1,22 +1,38 @@ class Gitea::Repository::Contributors::GetService < Gitea::ClientService - attr_reader :owner, :repo_name + attr_reader :owner, :repo_name, :page, :limit - def initialize(owner, repo_name) + def initialize(owner, repo_name, params={}) @owner = owner @repo_name = repo_name + @page = params[:page] || 1 + @limit = params[:limit] || 20 end def call response = get(url, params, true) - render_status(response) + render_result(response) end private def params - Hash.new.merge(token: owner.gitea_token) + Hash.new.merge(token: owner.gitea_token, page: page, limit: limit) end def url "/repos/#{owner.login}/#{repo_name}/contributors" end + + def render_result(response) + 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 + nil + # {status: -1, message: "#{body['message']}"} + end + end end \ No newline at end of file diff --git a/app/views/repositories/_contributor.json.jbuilder b/app/views/repositories/_contributor.json.jbuilder index 56fa9ce86..ed036aae3 100644 --- a/app/views/repositories/_contributor.json.jbuilder +++ b/app/views/repositories/_contributor.json.jbuilder @@ -1,15 +1,15 @@ -user = $redis_cache.hgetall("v2-owner-common:#{contributor["login"]}-#{contributor["email"]}") +user = $redis_cache.hgetall("v2-owner-common:#{contributor["name"]}-#{contributor["email"]}") if user.blank? - json.contributions contributor["contributions"] - # json.gid contributor["id"] - json.login contributor["login"] + json.contributions contributor["commits"] + # json.id contributor["id"] + json.name contributor["name"] json.type nil - json.name contributor["login"] - json.image_url User::Avatar.get_letter_avatar_url(contributor["login"]) + json.name contributor["name"] + json.image_url User::Avatar.get_letter_avatar_url(contributor["name"]) else - json.contributions contributor["contributions"] - # json.gid contributor["id"] - json.login user["login"] + json.contributions contributor["commits"] + json.id user["id"] + json.name user["name"] json.type user["type"] json.name user["name"] json.image_url user["avatar_url"] diff --git a/app/views/repositories/contributors.json.jbuilder b/app/views/repositories/contributors.json.jbuilder index 2fb6abae8..bec285523 100644 --- a/app/views/repositories/contributors.json.jbuilder +++ b/app/views/repositories/contributors.json.jbuilder @@ -1,4 +1,4 @@ -total_count = @contributors.size +total_count = @total_count json.list @contributors.each do |contributor| json.partial! 'contributor', locals: { contributor: contributor } end From 36dbf76d808718526d88216a32cddc1861334e8a Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 23 Feb 2023 13:45:30 +0800 Subject: [PATCH 08/46] =?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/branches/list_service.rb | 9 +++++---- .../projects/branches/_simple_gitea_detail.json.jbuilder | 2 +- app/views/api/v1/projects/branches/create.json.jbuilder | 2 +- app/views/api/v1/projects/branches/index.json.jbuilder | 3 ++- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/services/api/v1/projects/branches/list_service.rb b/app/services/api/v1/projects/branches/list_service.rb index f53dc1f49..590c4884f 100644 --- a/app/services/api/v1/projects/branches/list_service.rb +++ b/app/services/api/v1/projects/branches/list_service.rb @@ -15,10 +15,11 @@ class Api::V1::Projects::Branches::ListService < ApplicationService def call load_gitea_data - - gitea_data["default_branch"] = gitea_repo_data["default_branch"] + load_default_branch - gitea_data + @gitea_data[:default_branch] = @gitea_repo_data["default_branch"] + + @gitea_data end private @@ -39,7 +40,7 @@ class Api::V1::Projects::Branches::ListService < ApplicationService end def load_default_branch - @gitea_repo_data = $gitea_client.get_repos_by_owner_repo('yystopf', 'pig') rescue nil + @gitea_repo_data = $gitea_client.get_repos_by_owner_repo(owner, repo) 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/branches/_simple_gitea_detail.json.jbuilder b/app/views/api/v1/projects/branches/_simple_gitea_detail.json.jbuilder index 98890eba4..c9235bdb4 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 @@ -20,7 +20,7 @@ json.user_can_merge branch['user_can_merge'] json.commit_id branch['commit']['id'] json.commit_time_from_now time_from_now(branch['commit']['timestamp'].to_time) json.commit_time branch['commit']['timestamp'] -json.default_branch branch['default_branch'] +json.default_branch default_branch || nil json.http_url render_http_url(@project) json.zip_url render_zip_url(@owner, @project.repository, branch['name']) json.tar_url render_tar_url(@owner, @project.repository, branch['name']) \ No newline at end of file diff --git a/app/views/api/v1/projects/branches/create.json.jbuilder b/app/views/api/v1/projects/branches/create.json.jbuilder index eed860b81..b7de0f576 100644 --- a/app/views/api/v1/projects/branches/create.json.jbuilder +++ b/app/views/api/v1/projects/branches/create.json.jbuilder @@ -1 +1 @@ -json.partial! "api/v1/projects/branches/simple_gitea_detail", branch: @result_object +json.partial! "api/v1/projects/branches/simple_gitea_detail", branch: @result_object, default_branch: @result_object[:default_branch] diff --git a/app/views/api/v1/projects/branches/index.json.jbuilder b/app/views/api/v1/projects/branches/index.json.jbuilder index cfb9bb647..80b3e4d03 100644 --- a/app/views/api/v1/projects/branches/index.json.jbuilder +++ b/app/views/api/v1/projects/branches/index.json.jbuilder @@ -1,4 +1,5 @@ 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 + json.partial! "api/v1/projects/branches/simple_gitea_detail", branch: branch, default_branch: @result_object[:default_branch] + end \ No newline at end of file From 222de17437b64485dc6dfb6f3b18cf713ec7ffb1 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 23 Feb 2023 13:54:18 +0800 Subject: [PATCH 09/46] =?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 1528d502b..216884ea6 100644 --- a/Gemfile +++ b/Gemfile @@ -140,4 +140,4 @@ gem 'doorkeeper' gem 'doorkeeper-jwt' -gem 'gitea-client', '~> 1.3.1' +gem 'gitea-client', '~> 1.3.2' From d9b2e98110664f4ce01ff80af5e7a2f31b9b8ced Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 28 Feb 2023 14:19:55 +0800 Subject: [PATCH 10/46] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9Awebhook=20http?= =?UTF-8?q?=5Fmethod=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- app/services/api/v1/projects/pulls/versions/get_diff_service.rb | 2 +- app/services/api/v1/projects/webhooks/update_service.rb | 2 +- app/services/gitea/repository/webhooks/create_service.rb | 2 +- app/services/gitea/repository/webhooks/update_service.rb | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 216884ea6..805e88fc6 100644 --- a/Gemfile +++ b/Gemfile @@ -140,4 +140,4 @@ gem 'doorkeeper' gem 'doorkeeper-jwt' -gem 'gitea-client', '~> 1.3.2' +gem 'gitea-client', '~> 1.3.3' diff --git a/app/services/api/v1/projects/pulls/versions/get_diff_service.rb b/app/services/api/v1/projects/pulls/versions/get_diff_service.rb index 1cae8c345..1f882fd3b 100644 --- a/app/services/api/v1/projects/pulls/versions/get_diff_service.rb +++ b/app/services/api/v1/projects/pulls/versions/get_diff_service.rb @@ -30,7 +30,7 @@ class Api::V1::Projects::Pulls::Versions::GetDiffService < ApplicationService end def load_gitea_data - @gitea_data = $gitea_hat_client.get_repos_pulls_versions_diff_by_owner_repo_index_version_id(owner, repo, index, version_id, {query: request_params}) + @gitea_data = $gitea_hat_client.get_repos_pulls_versions_diff_by_owner_repo_index_id(owner, repo, index, version_id, {query: request_params}) raise Error, '获取合并请求版本diff失败!' unless @gitea_data.is_a?(Hash) end end \ No newline at end of file diff --git a/app/services/api/v1/projects/webhooks/update_service.rb b/app/services/api/v1/projects/webhooks/update_service.rb index a632d6f2d..c98a24ad8 100644 --- a/app/services/api/v1/projects/webhooks/update_service.rb +++ b/app/services/api/v1/projects/webhooks/update_service.rb @@ -58,6 +58,6 @@ class Api::V1::Projects::Webhooks::UpdateService < ApplicationService end def excute_data_to_gitea - @gitea_data = $gitea_client.patch_repos_hooks_by_owner_repo_id(owner, repo, id, {body: request_body.to_json, query: request_params}) rescue nil + @gitea_data = $gitea_hat_client.patch_repos_hooks_by_owner_repo_id(owner, repo, id, {body: request_body.to_json, query: request_params}) rescue nil end end \ No newline at end of file diff --git a/app/services/gitea/repository/webhooks/create_service.rb b/app/services/gitea/repository/webhooks/create_service.rb index 33c9a9b0c..9105b39c5 100644 --- a/app/services/gitea/repository/webhooks/create_service.rb +++ b/app/services/gitea/repository/webhooks/create_service.rb @@ -8,7 +8,7 @@ class Gitea::Repository::Webhooks::CreateService < Gitea::ClientService end def call - response = post(url, request_params) + response = post(url, request_params, true) render_response(response) end diff --git a/app/services/gitea/repository/webhooks/update_service.rb b/app/services/gitea/repository/webhooks/update_service.rb index 6094c6c51..25456a801 100644 --- a/app/services/gitea/repository/webhooks/update_service.rb +++ b/app/services/gitea/repository/webhooks/update_service.rb @@ -9,7 +9,7 @@ class Gitea::Repository::Webhooks::UpdateService < Gitea::ClientService end def call - response = patch(url, data_params) + response = patch(url, data_params, true) render_response(response) end From 13e266aa282e177cc067c700ee4d4216f7237e4b Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 7 Mar 2023 15:27:22 +0800 Subject: [PATCH 11/46] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E8=AF=B7=E6=B1=82=E6=8C=87=E6=B4=BE=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E6=AD=A3=E5=B8=B8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/gitea/pull_request/update_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/gitea/pull_request/update_service.rb b/app/services/gitea/pull_request/update_service.rb index a68981f29..339caa6ce 100644 --- a/app/services/gitea/pull_request/update_service.rb +++ b/app/services/gitea/pull_request/update_service.rb @@ -27,7 +27,7 @@ class Gitea::PullRequest::UpdateService < Gitea::ClientService end def call - response = patch(url, request_params) + response = patch(url, request_params, true) status, message, body = render_response(response) json_format(status, message, body) From 77b3c20e154ca0de1f77c5fc16c538a7845ad6ac Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 16 Mar 2023 09:47:11 +0800 Subject: [PATCH 12/46] =?UTF-8?q?=E6=9B=B4=E6=96=B0=EF=BC=9Agitea=20client?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= 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 805e88fc6..abe202581 100644 --- a/Gemfile +++ b/Gemfile @@ -140,4 +140,4 @@ gem 'doorkeeper' gem 'doorkeeper-jwt' -gem 'gitea-client', '~> 1.3.3' +gem 'gitea-client', '~> 1.4.1' From bd110bac00cf4ddeb28aa7c057d84813f410f17b Mon Sep 17 00:00:00 2001 From: chenjing <28122123@qq.com> Date: Thu, 16 Mar 2023 16:48:00 +0800 Subject: [PATCH 13/46] remove identity for admins user --- app/controllers/admins/users_controller.rb | 6 ++--- app/views/admins/users/edit.html.erb | 22 ------------------- app/views/admins/users/index.html.erb | 6 +---- .../admins/users/shared/_user_list.html.erb | 1 - 4 files changed, 4 insertions(+), 31 deletions(-) diff --git a/app/controllers/admins/users_controller.rb b/app/controllers/admins/users_controller.rb index 07ea8261e..8ff5908c6 100644 --- a/app/controllers/admins/users_controller.rb +++ b/app/controllers/admins/users_controller.rb @@ -64,8 +64,8 @@ class Admins::UsersController < Admins::BaseController end def update_params - params.require(:user).permit(%i[lastname nickname gender identity technical_title student_id is_shixun_marker - mail phone location location_city school_id department_id admin business is_test - password professional_certification authentication login]) + params.require(:user).permit(%i[lastname nickname gender technical_title is_shixun_marker + mail phone location location_city school_id department_id admin + password login]) end end diff --git a/app/views/admins/users/edit.html.erb b/app/views/admins/users/edit.html.erb index 3b4801772..b407cbbe7 100644 --- a/app/views/admins/users/edit.html.erb +++ b/app/views/admins/users/edit.html.erb @@ -63,19 +63,6 @@ <%= f.input :gender, as: :radio_buttons, label: '性别', collection: [%w(男 0), %w(女 1)], wrapper_html: { class: 'col-md-3' } %> -
-
- <%= f.label :identity, label: '职业' %> - <%= select_tag('user[identity]', [], class: 'form-control identity-select optional', 'data-value': @user.user_extension&.identity, 'data-first-title': '请选择') %> -
-
- <%= f.label :technical_title, label: '职称' %> - <%= select_tag('user[technical_title]', [], class: 'form-control technical-title-select optional', 'data-value': @user.technical_title) %> -
- - <%= f.input :student_id, as: :tel, label: '学号', wrapper_html: { class: 'col-md-2', style: @user&.user_extension&.student? ? '' : 'display:none;' }, input_html: { class: 'student-id-input' } %> -
-
<%= f.input :mail, as: :email, label: '邮箱地址', wrapper_html: { class: 'col-md-3' }, input_html: { class: 'col-sm-11' } %> <%= f.input :phone, as: :tel, label: '手机号', wrapper_html: { class: 'col-md-3' }, input_html: { class: 'col-sm-11', autocomplete: 'off' } %> @@ -102,19 +89,10 @@ <%= f.label :role, label: '角色' %>
<%= f.input :admin, as: :boolean, label: '管理员', checked_value: 1, unchecked_value: 0 %> - <%= f.input :business, as: :boolean, label: '运营人员', wrapper_html: { class: 'ml-3' }, checked_value: 1, unchecked_value: 0 %> - <%= f.input :is_test, as: :boolean, label: '测试账号', wrapper_html: { class: 'ml-3' }, checked_value: 1, unchecked_value: 0 %>
<% end %> -
- <%= f.label :role, label: '认证信息' %> -
- <%= f.input :professional_certification, as: :boolean, label: '职业认证', checked_value: 1, unchecked_value: 0 %> - <%= f.input :authentication, as: :boolean, label: '实名认证', wrapper_html: { class: 'ml-3' }, checked_value: 1, unchecked_value: 0 %> -
-
<%= f.input :password, as: :password, label: '修改密码', wrapper_html: { class: 'col-md-3' }, input_html: { class: 'col-sm-11', autocomplete: 'new-password' } %> diff --git a/app/views/admins/users/index.html.erb b/app/views/admins/users/index.html.erb index 4ba38c39a..3c355242e 100644 --- a/app/views/admins/users/index.html.erb +++ b/app/views/admins/users/index.html.erb @@ -10,11 +10,7 @@ <%= select_tag(:status, options_for_select(status_options), class: 'form-control') %>
-
- - <% identity_options = [['全部', ''], ['教师', 0], ['学生', 1], ['专业人士', 2]] %> - <%= select_tag(:identity, options_for_select(identity_options), class: 'form-control') %> -
+
<% open_user_type_options = [['所有用户', ''], ['头歌同步', "OpenUsers::Educoder"], ['平台注册', "Forge"],] %> diff --git a/app/views/admins/users/shared/_user_list.html.erb b/app/views/admins/users/shared/_user_list.html.erb index 716e7cc54..67571178a 100644 --- a/app/views/admins/users/shared/_user_list.html.erb +++ b/app/views/admins/users/shared/_user_list.html.erb @@ -24,7 +24,6 @@ <%= overflow_hidden_span display_text(user.mail), width: 150 %> <%= overflow_hidden_span display_text(user.phone), width: 100 %> - <%= user.identity %> <%= display_text(user.created_on&.strftime('%Y-%m-%d %H:%M')) %> <%= display_text(user.last_login_on&.strftime('%Y-%m-%d %H:%M')) %> <%= link_to user.projects_count, "/#{user.login}/projects", target: "_blank" %> From c02ea218b39f826b9516642b31a696194c1d59e2 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 16 Mar 2023 17:44:11 +0800 Subject: [PATCH 14/46] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9A=E8=B4=A1?= =?UTF-8?q?=E7=8C=AE=E8=80=85=E8=BF=94=E5=9B=9E=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/repositories/_contributor.json.jbuilder | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/views/repositories/_contributor.json.jbuilder b/app/views/repositories/_contributor.json.jbuilder index ed036aae3..2aa232fa6 100644 --- a/app/views/repositories/_contributor.json.jbuilder +++ b/app/views/repositories/_contributor.json.jbuilder @@ -2,13 +2,16 @@ user = $redis_cache.hgetall("v2-owner-common:#{contributor["name"]}-#{contributo if user.blank? json.contributions contributor["commits"] # json.id contributor["id"] - json.name contributor["name"] + json.login contributor["name"] + json.email contributor["email"] json.type nil json.name contributor["name"] json.image_url User::Avatar.get_letter_avatar_url(contributor["name"]) else json.contributions contributor["commits"] json.id user["id"] + json.login user["login"] + json.email user["email"] json.name user["name"] json.type user["type"] json.name user["name"] From ac49edc8e8c2e08225512e719265f3cc5cbf2951 Mon Sep 17 00:00:00 2001 From: chenjing <28122123@qq.com> Date: Fri, 17 Mar 2023 08:43:02 +0800 Subject: [PATCH 15/46] remove user list th --- app/views/admins/users/shared/_user_list.html.erb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/views/admins/users/shared/_user_list.html.erb b/app/views/admins/users/shared/_user_list.html.erb index 67571178a..d3061e5ae 100644 --- a/app/views/admins/users/shared/_user_list.html.erb +++ b/app/views/admins/users/shared/_user_list.html.erb @@ -5,7 +5,6 @@ 昵称 邮件地址 手机号码 - 角色 <%= sort_tag('创建于', name: 'created_on', path: admins_users_path) %> <%= sort_tag('最后登录', name: 'last_login_on', path: admins_users_path) %> 项目数 From a6307534854f4c6367e0a0d1f56c16b0a3446c0d Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 20 Mar 2023 10:11:20 +0800 Subject: [PATCH 16/46] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=88=86=E6=94=AFHash=20to=20Array?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/v1/projects/contents/batch_create_service.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/services/api/v1/projects/contents/batch_create_service.rb b/app/services/api/v1/projects/contents/batch_create_service.rb index 7c514c376..6503fd88c 100644 --- a/app/services/api/v1/projects/contents/batch_create_service.rb +++ b/app/services/api/v1/projects/contents/batch_create_service.rb @@ -84,9 +84,9 @@ class Api::V1::Projects::Contents::BatchCreateService < ApplicationService def check_branch_exist result = $gitea_hat_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? + raise Error, '查询分支名称失败!' unless result.is_a?(Array) + raise Error, '分支不存在!' unless result.include?(branch) + raise Error, '分支已存在!' if result.include?(new_branch) && !new_branch.nil? end end \ No newline at end of file From 0a7c41d97c5d874bde0924271a11154557950d2a Mon Sep 17 00:00:00 2001 From: chenjing <28122123@qq.com> Date: Mon, 20 Mar 2023 14:47:48 +0800 Subject: [PATCH 17/46] user fresh gitea token method --- app/models/user.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/models/user.rb b/app/models/user.rb index 5e21212ab..1818bccb1 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -449,6 +449,19 @@ class User < Owner self.status = STATUS_EDIT_INFO end + def fresh_gitea_token + result = $gitea_client.get_users_tokens_by_username(self.login, {query: {sudo: self.login}}) + if result[:data].present? + result[:data].map{ |e| + $gitea_client.delete_users_tokens_by_username_token(self.login, e["name"], {query: {sudo: self.login} }) + } + end + new_result = $gitea_client.post_users_tokens_by_username(self.login, { query: {sudo: self.login}, body:{ name: self.login} }) + if new_result["sha1"].present? + update(gitea_token: new_result["sha1"]) + end + end + def activate! update_attribute(:status, STATUS_ACTIVE) prohibit_gitea_user_login!(false) From 7da1c7e13bbfe83479156e8c9afe64d8ad0b2575 Mon Sep 17 00:00:00 2001 From: chenjing <28122123@qq.com> Date: Mon, 20 Mar 2023 15:25:47 +0800 Subject: [PATCH 18/46] add admin user view button for gitea token reset --- app/assets/javascripts/admins/users/index.js | 14 ++++++++++++++ app/controllers/admins/users_controller.rb | 6 ++++++ app/views/admins/users/shared/_user_list.html.erb | 3 +-- config/routes.rb | 1 + 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/admins/users/index.js b/app/assets/javascripts/admins/users/index.js index 0ef024bfd..55dabed19 100644 --- a/app/assets/javascripts/admins/users/index.js +++ b/app/assets/javascripts/admins/users/index.js @@ -94,6 +94,20 @@ $(document).on('turbolinks:load', function(){ } }); }); + // reset user login times + $('.users-list-container').on('click', '.fresh-gitea-token-action', function(){ + var $action = $(this); + + var userId = $action.data('id'); + $.ajax({ + url: '/admins/users/' + userId + '/fresh_gitea_token', + method: 'POST', + dataType: 'json', + success: function() { + showSuccessNotify(); + } + }); + }); // ***************** reward grade modal ***************** var $rewardGradeModal = $('.admin-users-reward-grade-modal'); diff --git a/app/controllers/admins/users_controller.rb b/app/controllers/admins/users_controller.rb index 8ff5908c6..9137e218e 100644 --- a/app/controllers/admins/users_controller.rb +++ b/app/controllers/admins/users_controller.rb @@ -57,6 +57,12 @@ class Admins::UsersController < Admins::BaseController render_ok end + + def fresh_gitea_token + @user.fresh_gitea_token + render_ok + end + private def finder_user diff --git a/app/views/admins/users/shared/_user_list.html.erb b/app/views/admins/users/shared/_user_list.html.erb index d3061e5ae..4ef85bc5a 100644 --- a/app/views/admins/users/shared/_user_list.html.erb +++ b/app/views/admins/users/shared/_user_list.html.erb @@ -42,9 +42,8 @@
<%= javascript_void_link('更多', class: 'action dropdown-toggle', 'data-toggle': 'dropdown', 'aria-haspopup': true, 'aria-expanded': false) %>
diff --git a/config/routes.rb b/config/routes.rb index 3488bacb4..0d29e403f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -824,6 +824,7 @@ Rails.application.routes.draw do post :unlock post :active post :reset_login_times + post :fresh_gitea_token end end resource :import_disciplines, only: [:create] From 26ea240303512b5e45792ca7fcbdf6fe72bf8500 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 21 Mar 2023 15:59:19 +0800 Subject: [PATCH 19/46] =?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/views/api/v1/projects/branches/all.json.jbuilder | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/api/v1/projects/branches/all.json.jbuilder b/app/views/api/v1/projects/branches/all.json.jbuilder index d89b1ee16..4a9f2a12b 100644 --- a/app/views/api/v1/projects/branches/all.json.jbuilder +++ b/app/views/api/v1/projects/branches/all.json.jbuilder @@ -1,3 +1,3 @@ -json.array! @result_object["branch_name"] do |branch| +json.array! @result_object do |branch| json.partial! "api/v1/projects/branches/simple_detail", branch: branch end \ No newline at end of file From 50696de804fb9591cac8dbc45ec39a32823c17b0 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 21 Mar 2023 17:48:02 +0800 Subject: [PATCH 20/46] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9Aheatmap?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E6=AD=A3=E5=B8=B8=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users/statistics_controller.rb | 10 +++++++--- app/services/gitea/user/headmap_service.rb | 7 ++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/controllers/users/statistics_controller.rb b/app/controllers/users/statistics_controller.rb index 1948af9b3..417aecd17 100644 --- a/app/controllers/users/statistics_controller.rb +++ b/app/controllers/users/statistics_controller.rb @@ -4,7 +4,8 @@ class Users::StatisticsController < Users::BaseController # 近期活动统计 def activity date_range = (1.week.ago.to_date..Date.today).to_a - commit_request = Gitea::User::HeadmapService.call(observed_user.login, 1.week.ago.to_date.to_time.to_i, Date.today.to_time.to_i) + commit_request = Gitea::User::HeadmapService.call(observed_user.login, 1.week.ago.to_date.to_time.to_i, Date.today.end_of_day.to_time.to_i, observed_user.gitea_token) + puts commit_request commit_data = commit_request[2] @date_data = [] @issue_data = [] @@ -14,8 +15,11 @@ class Users::StatisticsController < Users::BaseController @date_data << date.strftime("%Y.%m.%d") @issue_data << observed_user.issues.issue_issue.where("DATE(created_on) = ?", date).size @pull_request_data << observed_user.pull_requests.where("DATE(created_at) = ?", date).size - date_commit_data = commit_data.blank? ? nil : commit_data.select{|item| item["timestamp"] == date.to_time.to_i} - @commit_data << (date_commit_data.blank? ? 0 : date_commit_data[0]["contributions"].to_i) + contribution = 0 + commit_data.each do |item| + contribution += item["contributions"] if Time.at(item["timestamp"]).strftime("%Y-%m-%d") == date.to_s + end + @commit_data << contribution end render :json => {dates: @date_data, issues_count: @issue_data, pull_requests_count: @pull_request_data, commits_count: @commit_data} end diff --git a/app/services/gitea/user/headmap_service.rb b/app/services/gitea/user/headmap_service.rb index d066d0f16..eef8e21a9 100644 --- a/app/services/gitea/user/headmap_service.rb +++ b/app/services/gitea/user/headmap_service.rb @@ -1,10 +1,11 @@ class Gitea::User::HeadmapService < Gitea::ClientService - attr_reader :start_time, :end_time, :username + attr_reader :start_time, :end_time, :username, :token - def initialize(username, start_time, end_time) + def initialize(username, start_time, end_time, token=nil) @username = username @start_time = start_time @end_time = end_time + @token = token end def call @@ -14,7 +15,7 @@ class Gitea::User::HeadmapService < Gitea::ClientService private def params - Hash.new.merge(start: start_time, end: end_time) + Hash.new.merge(start: start_time, end: end_time, token: token) end def url From 132eb79b9fe42b234ff7d91f0263238792269ba0 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 21 Mar 2023 18:36:40 +0800 Subject: [PATCH 21/46] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9Aachive?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/repositories_controller.rb | 2 +- app/controllers/users/statistics_controller.rb | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index e6fef78f0..71c174f42 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -262,7 +262,7 @@ class RepositoriesController < ApplicationController archive_url = "/repos/#{@owner.login}/#{@repository.identifier}/archive/#{Addressable::URI.escape(params[:archive])}" file_path = [domain, api_url, archive_url].join - file_path = [file_path, "access_token=#{current_user&.gitea_token}"].join("?") if @repository.hidden? + file_path = [file_path, "access_token=#{current_user&.gitea_token}"].join("?") return render_not_found if !request.format.zip? && !request.format.gzip? diff --git a/app/controllers/users/statistics_controller.rb b/app/controllers/users/statistics_controller.rb index 417aecd17..013191910 100644 --- a/app/controllers/users/statistics_controller.rb +++ b/app/controllers/users/statistics_controller.rb @@ -5,7 +5,6 @@ class Users::StatisticsController < Users::BaseController def activity date_range = (1.week.ago.to_date..Date.today).to_a commit_request = Gitea::User::HeadmapService.call(observed_user.login, 1.week.ago.to_date.to_time.to_i, Date.today.end_of_day.to_time.to_i, observed_user.gitea_token) - puts commit_request commit_data = commit_request[2] @date_data = [] @issue_data = [] From a02a15ac12c017e7ce4fb25dee6ff9c5e90943a3 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 22 Mar 2023 18:04:35 +0800 Subject: [PATCH 22/46] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9Aheatmap?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users/headmaps_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/users/headmaps_controller.rb b/app/controllers/users/headmaps_controller.rb index 7faba1e50..83efd99fb 100644 --- a/app/controllers/users/headmaps_controller.rb +++ b/app/controllers/users/headmaps_controller.rb @@ -1,6 +1,6 @@ class Users::HeadmapsController < Users::BaseController def index - result = Gitea::User::HeadmapService.call(observed_user.login, start_stamp, end_stamp) + result = Gitea::User::HeadmapService.call(observed_user.login, start_stamp, end_stamp, observed_user&.gitea_token) @headmaps = result[2].blank? ? [] : result[2] rescue Exception => e uid_logger_error(e.message) From d6888a03e35c7c30aeaa9afe46c547ff418234fa Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 24 Mar 2023 14:10:33 +0800 Subject: [PATCH 23/46] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9A=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E4=BD=BF=E7=94=A8owner=E7=9A=84gitea=5Ftoken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/repositories_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 71c174f42..fab93b518 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -262,7 +262,7 @@ class RepositoriesController < ApplicationController archive_url = "/repos/#{@owner.login}/#{@repository.identifier}/archive/#{Addressable::URI.escape(params[:archive])}" file_path = [domain, api_url, archive_url].join - file_path = [file_path, "access_token=#{current_user&.gitea_token}"].join("?") + file_path = [file_path, "access_token=#{@owner&.gitea_token}"].join("?") return render_not_found if !request.format.zip? && !request.format.gzip? @@ -275,7 +275,7 @@ class RepositoriesController < ApplicationController url = "/repos/#{@owner.login}/#{@repository.identifier}/raw/#{Addressable::URI.escape(params[:filepath])}?ref=#{Addressable::URI.escape(params[:ref])}" file_path = [domain, api_url, url].join - file_path = [file_path, "access_token=#{current_user&.gitea_token}"].join("&") + file_path = [file_path, "access_token=#{@owner&.gitea_token}"].join("&") redirect_to file_path end From 2683b03a6931c1743a32d90fdc4e5864acb9e105 Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 24 Mar 2023 14:23:11 +0800 Subject: [PATCH 24/46] =?UTF-8?q?=E6=9B=B4=E6=94=B9:=20=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=BD=BF=E7=94=A8owner=E7=9A=84token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/repositories_controller.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index fab93b518..d5e259893 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -303,16 +303,16 @@ class RepositoriesController < ApplicationController if params[:filepath].present? file_path_uri = URI.parse(URI.encode(params[:filepath].to_s.strip)) Gitea::Repository::Commits::FileListService.new(@project.owner.login, @project.identifier, file_path_uri, - sha: get_ref, page: 1, limit: 1, token: current_user&.gitea_token).call + sha: get_ref, page: 1, limit: 1, token: @project&.owner&.gitea_token).call else Gitea::Repository::Commits::ListService.new(@project.owner.login, @project.identifier, - sha: get_ref, page: 1, limit: 1, token: current_user&.gitea_token).call + sha: get_ref, page: 1, limit: 1, token: @project&.owner&.gitea_token).call end end def get_statistics @branches_count = @project.educoder? ? 0 : Gitea::Repository::Branches::ListService.new(@project.owner, @project.identifier).call&.size - @tags_count = @project.educoder? ? 0 : Gitea::Repository::Tags::ListService.new(current_user&.gitea_token, @project.owner.login, @project.identifier).call&.size + @tags_count = @project.educoder? ? 0 : Gitea::Repository::Tags::ListService.new(@project&.owner&.gitea_token, @project.owner.login, @project.identifier).call&.size end def get_ref From f5db3273cd1c5739cbdc556d3796890bf839f251 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 27 Mar 2023 13:55:12 +0800 Subject: [PATCH 25/46] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E8=AF=BB?= =?UTF-8?q?=E5=8F=96=E4=BB=93=E5=BA=93=E6=95=B0=E6=8D=AE=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=8B=A5=E6=9C=89=E8=80=85token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/repositories_controller.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index d5e259893..f03215ace 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -122,10 +122,10 @@ class RepositoriesController < ApplicationController if params[:filepath].present? file_path_uri = URI.parse(URI.encode(params[:filepath].to_s.strip)) @hash_commit = Gitea::Repository::Commits::FileListService.new(@owner.login, @project.identifier, file_path_uri, - sha: params[:sha], page: params[:page], limit: params[:limit], token: current_user&.gitea_token).call + sha: params[:sha], page: params[:page], limit: params[:limit], token: @owner&.gitea_token).call else @hash_commit = Gitea::Repository::Commits::ListService.new(@owner.login, @project.identifier, - sha: params[:sha], page: params[:page], limit: params[:limit], token: current_user&.gitea_token).call + sha: params[:sha], page: params[:page], limit: params[:limit], token: @owner&.gitea_token).call end end end @@ -140,8 +140,8 @@ class RepositoriesController < ApplicationController if @project.educoder? return render_error('暂未开放,敬请期待.') else - @commit = Gitea::Repository::Commits::GetService.call(@owner.login, @repository.identifier, @sha, current_user&.gitea_token) - @commit_diff = Gitea::Repository::Commits::GetService.call(@owner.login, @repository.identifier, @sha, current_user&.gitea_token, {diff: true}) + @commit = Gitea::Repository::Commits::GetService.call(@owner.login, @repository.identifier, @sha, @owner&.gitea_token) + @commit_diff = Gitea::Repository::Commits::GetService.call(@owner.login, @repository.identifier, @sha, @owner&.gitea_token, {diff: true}) render_error(@commit[:message], @commit[:status]) if @commit.has_key?(:status) || @commit_diff.has_key?(:status) end end @@ -156,7 +156,7 @@ class RepositoriesController < ApplicationController @tag_names = result.is_a?(Hash) && result.key?(:status) ? [] : name_result - result = Gitea::Repository::Tags::ListService.call(current_user&.gitea_token, @owner.login, @project.identifier, {page: params[:page], limit: params[:limit]}) + result = Gitea::Repository::Tags::ListService.call(@owner&.gitea_token, @owner.login, @project.identifier, {page: params[:page], limit: params[:limit]}) @tags = result.is_a?(Hash) && result.key?(:status) ? [] : result end From 67fb6fce94cfdf557082833e66b18b467040ac4d Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 27 Mar 2023 14:16:06 +0800 Subject: [PATCH 26/46] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E8=AF=BB?= =?UTF-8?q?=E5=8F=96=E4=BB=93=E5=BA=93=E6=95=B0=E6=8D=AE=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=8B=A5=E6=9C=89=E8=80=85token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/attachments_controller.rb | 2 +- app/controllers/pull_requests_controller.rb | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb index 63427aa45..941dcf35f 100644 --- a/app/controllers/attachments_controller.rb +++ b/app/controllers/attachments_controller.rb @@ -36,7 +36,7 @@ class AttachmentsController < ApplicationController domain = GiteaService.gitea_config[:domain] api_url = GiteaService.gitea_config[:base_url] url = ("/repos"+url.split(base_url + "/api")[1]).gsub('?filepath=', '/').gsub('&', '?') - request_url = [domain, api_url, url, "?ref=#{params[:ref]}&access_token=#{current_user&.gitea_token}"].join + request_url = [domain, api_url, url, "?ref=#{params[:ref]}&access_token=#{User.where(admin: true).take&.gitea_token}"].join response = Faraday.get(request_url) filename = url.to_s.split("/").pop() else diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index 2b9bbbe6f..d02bb1deb 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -173,7 +173,7 @@ class PullRequestsController < ApplicationController @issue_user = @issue.user @issue_assign_to = @issue.get_assign_user @gitea_pull = Gitea::PullRequest::GetService.call(@owner.login, - @repository.identifier, @pull_request.gitea_number, current_user&.gitea_token) + @repository.identifier, @pull_request.gitea_number, @owner&.gitea_token) @last_review = @pull_request.reviews.take end @@ -237,12 +237,12 @@ class PullRequestsController < ApplicationController def files - @files_result = Gitea::PullRequest::FilesService.call(@owner.login, @project.identifier, @pull_request.gitea_number, current_user&.gitea_token) + @files_result = Gitea::PullRequest::FilesService.call(@owner.login, @project.identifier, @pull_request.gitea_number, @owner&.gitea_token) # render json: @files_result end def commits - @commits_result = Gitea::PullRequest::CommitsService.call(@owner.login, @project.identifier, @pull_request.gitea_number, current_user&.gitea_token) + @commits_result = Gitea::PullRequest::CommitsService.call(@owner.login, @project.identifier, @pull_request.gitea_number, @owner&.gitea_token) # render json: @commits_result end From a9ecb5e47ea6501149645f2321510cb382514d26 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 27 Mar 2023 15:11:21 +0800 Subject: [PATCH 27/46] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9A=E6=9B=B4?= =?UTF-8?q?=E6=94=B9=E5=8F=91=E8=A1=8C=E7=89=88=E6=9D=83=E9=99=90=E9=99=8D?= =?UTF-8?q?=E8=87=B3=E5=BC=80=E5=8F=91=E8=80=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/version_releases_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/version_releases_controller.rb b/app/controllers/version_releases_controller.rb index dd59098f7..8324b05bb 100644 --- a/app/controllers/version_releases_controller.rb +++ b/app/controllers/version_releases_controller.rb @@ -163,7 +163,7 @@ class VersionReleasesController < ApplicationController end def check_release_authorize - return render_forbidden("您没有权限进行此操作.") unless current_user.admin? || @project.manager?(current_user) + return render_forbidden("您没有权限进行此操作.") unless current_user.admin? || @project.develper?(current_user) end end From 1e75c8c0793dfb944afc31e92e86af2fda00c832 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 28 Mar 2023 14:22:32 +0800 Subject: [PATCH 28/46] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=9B=B4=E6=94=B9=E9=A1=B9=E7=9B=AE=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/concerns/repository/languages_percentagable.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/concerns/repository/languages_percentagable.rb b/app/controllers/concerns/repository/languages_percentagable.rb index 83374dad1..dce5c7ffc 100644 --- a/app/controllers/concerns/repository/languages_percentagable.rb +++ b/app/controllers/concerns/repository/languages_percentagable.rb @@ -13,7 +13,7 @@ module Repository::LanguagesPercentagable def update_project_language(language) return if @project.project_language.present? db_language = ProjectLanguage.find_or_create_by!(name: language.keys.first.downcase.upcase_first) - @project.update_column(:project_language_id, db_language.id) + @project.update_attribute(:project_language_id, db_language.id) rescue return end From 007edd38bea3c7cb478a57be7bf6bde3d55aac32 Mon Sep 17 00:00:00 2001 From: xxq250 Date: Tue, 28 Mar 2023 14:36:05 +0800 Subject: [PATCH 29/46] =?UTF-8?q?=E9=87=8D=E5=86=99user.gitea=5Ftoken,?= =?UTF-8?q?=E5=BD=93=E7=94=A8=E6=88=B7=E4=B8=BAbot=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E6=9B=BF=E6=8D=A2=E6=88=90=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/user.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/models/user.rb b/app/models/user.rb index 5e21212ab..dbaf74ccc 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -845,6 +845,15 @@ class User < Owner end end + # 重写gitea_token,当用户为bot类型时,替换成管理员token + def gitea_token + if self.platform == "bot" + GiteaService.gitea_config[:admin_token] + else + self['gitea_token'] + end + end + protected def validate_password_length # 管理员的初始密码是5位 From 38ddb850c1e6f8f166f45163b47b3889fb9ac845 Mon Sep 17 00:00:00 2001 From: xxq250 Date: Tue, 28 Mar 2023 14:36:58 +0800 Subject: [PATCH 30/46] =?UTF-8?q?=E9=87=8D=E5=86=99user.gitea=5Ftoken,?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98token,yml=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/configuration.yml.example | 1 + 1 file changed, 1 insertion(+) diff --git a/config/configuration.yml.example b/config/configuration.yml.example index 6ae32e4f3..b446c0109 100644 --- a/config/configuration.yml.example +++ b/config/configuration.yml.example @@ -55,6 +55,7 @@ default: &default access_key_secret: '' domain: 'https://testgit.trustie.net' base_url: '/api/v1' + admin_token: '123123' accelerator: access_key_id: '' access_key_secret: '' From ca449ccc8a2a97737f516435ecce0051a2d55d93 Mon Sep 17 00:00:00 2001 From: xxq250 Date: Tue, 28 Mar 2023 14:38:44 +0800 Subject: [PATCH 31/46] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0bot=E7=94=A8=E6=88=B7=E6=9D=83=E9=99=90?= =?UTF-8?q?=EF=BC=8C=E5=B7=B2=E5=AE=89=E8=A3=85bot=EF=BC=8C=E5=BD=93?= =?UTF-8?q?=E5=89=8Dbot=E7=94=A8=E6=88=B7=E5=8D=B3=E6=8B=A5=E6=9C=89?= =?UTF-8?q?=E6=9D=83=E9=99=90=EF=BC=8C=E6=9D=83=E9=99=90=E7=B2=92=E5=BA=A6?= =?UTF-8?q?=E5=BE=85=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/concerns/project_operable.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/models/concerns/project_operable.rb b/app/models/concerns/project_operable.rb index 0bac02ce6..d5d45a468 100644 --- a/app/models/concerns/project_operable.rb +++ b/app/models/concerns/project_operable.rb @@ -190,22 +190,24 @@ module ProjectOperable end # 项目管理员(包含项目拥有者),权限:仓库设置、仓库可读可写 + # 增加bot用户权限,已安装bot,当前bot用户即拥有权限,权限粒度待完善 def manager?(user) if owner.is_a?(User) - managers.exists?(user_id: user.id) + managers.exists?(user_id: user.id) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?) elsif owner.is_a?(Organization) - managers.exists?(user_id: user.id) || owner.is_owner?(user.id) || (owner.is_only_admin?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0) + managers.exists?(user_id: user.id) || owner.is_owner?(user.id) || (owner.is_only_admin?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?) else false end end # 项目开发者,可读可写权限 + # 增加bot用户权限,已安装当前bot用户对应的bot即拥有权限,权限粒度待完善 def develper?(user) if owner.is_a?(User) - developers.exists?(user_id: user.id) + developers.exists?(user_id: user.id) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?) elsif owner.is_a?(Organization) - developers.exists?(user_id: user.id) || (owner.is_only_write?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0) + developers.exists?(user_id: user.id) || (owner.is_only_write?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?) else false end From b8869bd0e2dc78bdef742592516cc773c8cc678f Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 28 Mar 2023 14:48:11 +0800 Subject: [PATCH 32/46] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9A=E8=B4=A1?= =?UTF-8?q?=E7=8C=AE=E8=80=85=E8=B4=A1=E7=8C=AE=E5=8D=A0=E6=AF=94=E8=AE=A1?= =?UTF-8?q?=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/concerns/watchable.rb | 20 +++++++++++++++++++ .../repositories/_contributor.json.jbuilder | 3 ++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/models/concerns/watchable.rb b/app/models/concerns/watchable.rb index dc2b67f67..31093cad1 100644 --- a/app/models/concerns/watchable.rb +++ b/app/models/concerns/watchable.rb @@ -31,6 +31,26 @@ module Watchable following.size end + def simple_contribution_perc(project, perc=nil) + @project = project + @user = self + + def cal_perc(count_user, count_all) + (count_user * 1.0 / (count_all + 0.000000001)).round(5) + end + + if (@project['use_blockchain'] == true or @project['use_blockchain'] == 1) && @user.id.present? + balance_user = Blockchain::BalanceQueryOneProject.call({"user_id": @user.id, "project_id": @project.id}) + balance_all = Blockchain::RepoBasicInfo.call({"project_id": @project.id})["cur_supply"] + score = cal_perc(balance_user, balance_all) + score = (score * 100).round(1).to_s + "%" + else + score = perc + end + + score + end + def contribution_perc(project) @project = project @user = self diff --git a/app/views/repositories/_contributor.json.jbuilder b/app/views/repositories/_contributor.json.jbuilder index bd1a037f7..41edbf4af 100644 --- a/app/views/repositories/_contributor.json.jbuilder +++ b/app/views/repositories/_contributor.json.jbuilder @@ -6,6 +6,7 @@ if user.blank? json.type nil json.name contributor["login"] json.image_url User::Avatar.get_letter_avatar_url(contributor["login"]) + json.contribution_perc User.new(login: contributor["login"], mail: contributor["email"]).simple_contribution_perc(project, contributor["contribution_perc"]) else json.contributions contributor["contributions"] # json.gid contributor["id"] @@ -14,5 +15,5 @@ else json.name user["name"] json.image_url user["avatar_url"] db_user = User.find_by_id(user["id"]) - json.contribution_perc db_user.contribution_perc(project) if db_user.present? + json.contribution_perc db_user.simple_contribution_perc(project) if db_user.present? end From 33e503ed9a72aa0538628a206e2fbbbcdf2cd036 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 28 Mar 2023 14:57:35 +0800 Subject: [PATCH 33/46] =?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/views/repositories/_contributor.json.jbuilder | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/repositories/_contributor.json.jbuilder b/app/views/repositories/_contributor.json.jbuilder index 41edbf4af..49ec699bc 100644 --- a/app/views/repositories/_contributor.json.jbuilder +++ b/app/views/repositories/_contributor.json.jbuilder @@ -15,5 +15,5 @@ else json.name user["name"] json.image_url user["avatar_url"] db_user = User.find_by_id(user["id"]) - json.contribution_perc db_user.simple_contribution_perc(project) if db_user.present? + json.contribution_perc db_user.simple_contribution_perc(project, contributor["contribution_perc"]) if db_user.present? end From 7e0158345c82abd3041e88abbf92b84db48b552d Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 28 Mar 2023 15:00:37 +0800 Subject: [PATCH 34/46] =?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/views/repositories/_contributor.json.jbuilder | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/views/repositories/_contributor.json.jbuilder b/app/views/repositories/_contributor.json.jbuilder index 49ec699bc..bbfa08262 100644 --- a/app/views/repositories/_contributor.json.jbuilder +++ b/app/views/repositories/_contributor.json.jbuilder @@ -1,12 +1,12 @@ -user = $redis_cache.hgetall("v2-owner-common:#{contributor["login"]}-#{contributor["email"]}") +user = $redis_cache.hgetall("v2-owner-common:#{contributor["name"]}-#{contributor["email"]}") if user.blank? json.contributions contributor["contributions"] # json.gid contributor["id"] - json.login contributor["login"] + json.login contributor["name"] json.type nil - json.name contributor["login"] - json.image_url User::Avatar.get_letter_avatar_url(contributor["login"]) - json.contribution_perc User.new(login: contributor["login"], mail: contributor["email"]).simple_contribution_perc(project, contributor["contribution_perc"]) + json.name contributor["name"] + json.image_url User::Avatar.get_letter_avatar_url(contributor["name"]) + json.contribution_perc User.new(login: contributor["name"], mail: contributor["email"]).simple_contribution_perc(project, contributor["contribution_perc"]) else json.contributions contributor["contributions"] # json.gid contributor["id"] From 6a6a257d2a51169150be5ccdd11fe05a473b21c8 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 28 Mar 2023 15:03:13 +0800 Subject: [PATCH 35/46] =?UTF-8?q?=E4=BF=AE=E5=A4=8D:=20=E8=B4=A1=E7=8C=AE?= =?UTF-8?q?=E8=80=85=E5=A4=A7=E5=B0=8F=E5=86=99=E6=97=A0=E6=B3=95=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/repositories/_contributor.json.jbuilder | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/repositories/_contributor.json.jbuilder b/app/views/repositories/_contributor.json.jbuilder index bbfa08262..fa5151264 100644 --- a/app/views/repositories/_contributor.json.jbuilder +++ b/app/views/repositories/_contributor.json.jbuilder @@ -2,17 +2,17 @@ user = $redis_cache.hgetall("v2-owner-common:#{contributor["name"]}-#{contributo if user.blank? json.contributions contributor["contributions"] # json.gid contributor["id"] - json.login contributor["name"] + json.login contributor["name"].downcase json.type nil - json.name contributor["name"] + json.name contributor["name"].downcase json.image_url User::Avatar.get_letter_avatar_url(contributor["name"]) json.contribution_perc User.new(login: contributor["name"], mail: contributor["email"]).simple_contribution_perc(project, contributor["contribution_perc"]) else json.contributions contributor["contributions"] # json.gid contributor["id"] - json.login user["login"] + json.login user["login"].downcase json.type user["type"] - json.name user["name"] + json.name user["name"].downcase json.image_url user["avatar_url"] db_user = User.find_by_id(user["id"]) json.contribution_perc db_user.simple_contribution_perc(project, contributor["contribution_perc"]) if db_user.present? From 6992bf4959955271fba2d174a277ed91ce59b479 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 28 Mar 2023 15:15:08 +0800 Subject: [PATCH 36/46] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E8=B4=A1=E7=8C=AE=E8=80=85=E8=AF=BB=E5=8F=96=E8=A7=84?= =?UTF-8?q?=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/repositories/_contributor.json.jbuilder | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/views/repositories/_contributor.json.jbuilder b/app/views/repositories/_contributor.json.jbuilder index fa5151264..4a8f5611d 100644 --- a/app/views/repositories/_contributor.json.jbuilder +++ b/app/views/repositories/_contributor.json.jbuilder @@ -1,14 +1,16 @@ user = $redis_cache.hgetall("v2-owner-common:#{contributor["name"]}-#{contributor["email"]}") if user.blank? - json.contributions contributor["contributions"] + json.contributions contributor["commits"] # json.gid contributor["id"] - json.login contributor["name"].downcase + json.login nil json.type nil json.name contributor["name"].downcase + json.email contributor["email"] json.image_url User::Avatar.get_letter_avatar_url(contributor["name"]) json.contribution_perc User.new(login: contributor["name"], mail: contributor["email"]).simple_contribution_perc(project, contributor["contribution_perc"]) else - json.contributions contributor["contributions"] + json.contributions contributor["commits"] + json.id user["id"] # json.gid contributor["id"] json.login user["login"].downcase json.type user["type"] From 4bf14974dfb212aa7a6fb4f3d81477cc16574b11 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 28 Mar 2023 15:51:51 +0800 Subject: [PATCH 37/46] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E6=98=AF=E5=90=A6=E5=88=9B=E5=BB=BA=E4=BA=86pr?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/pull_requests/index.json.jbuilder | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/pull_requests/index.json.jbuilder b/app/views/pull_requests/index.json.jbuilder index ace52945c..299db0283 100644 --- a/app/views/pull_requests/index.json.jbuilder +++ b/app/views/pull_requests/index.json.jbuilder @@ -9,6 +9,7 @@ json.user_admin_or_developer @user_admin_or_developer json.project_name @project.name json.project_author @project.owner.try(:login) json.project_author_name @project.owner.try(:show_real_name) +json.has_created_pull_requests @project.pull_requests.size > 0 json.issues do json.array! @issues.to_a do |issue| From 189348cbd816d3180555daffbd2151f4debe6571 Mon Sep 17 00:00:00 2001 From: xxq250 Date: Wed, 29 Mar 2023 10:12:32 +0800 Subject: [PATCH 38/46] =?UTF-8?q?=E6=9B=B4=E6=8D=A2bot=20client=5Fid?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/installations_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/installations_controller.rb b/app/controllers/installations_controller.rb index d299f6710..2addade2d 100644 --- a/app/controllers/installations_controller.rb +++ b/app/controllers/installations_controller.rb @@ -29,7 +29,7 @@ class InstallationsController < ApplicationController begin @bot = Bot.find params[:id] tip_exception("该Bot已激活") if Doorkeeper::Application.find_by(uid: @bot.client_id, secret: @bot.client_secret).present? - @bot.client_id = Doorkeeper::OAuth::Helpers::UniqueToken.generate if params[:client_id].blank? + @bot.client_id = SecureRandom.uuid.gsub("-", "") if params[:client_id].blank? @bot.client_secret = Doorkeeper::OAuth::Helpers::UniqueToken.generate if params[:client_secret].blank? @bot.private_key = OpenSSL::PKey::RSA::generate(2048).to_s @bot.owner_id = current_user.id From f0dca4c0c134a92f821ded78501fcfeabc097587 Mon Sep 17 00:00:00 2001 From: xxq250 Date: Wed, 29 Mar 2023 14:14:25 +0800 Subject: [PATCH 39/46] =?UTF-8?q?softbot=E8=A1=A5=E5=85=85=E5=92=8C?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/installations_controller.rb | 32 +++++++++++++++++++ app/views/installations/app.json.jbuilder | 4 +++ app/views/installations/index.json.jbuilder | 3 ++ .../installations/repositories.json.jbuilder | 15 +++++++++ app/views/installations/show.json.jbuilder | 5 +++ config/routes.rb | 11 +++++-- 6 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 app/views/installations/app.json.jbuilder create mode 100644 app/views/installations/repositories.json.jbuilder create mode 100644 app/views/installations/show.json.jbuilder diff --git a/app/controllers/installations_controller.rb b/app/controllers/installations_controller.rb index 2addade2d..fb819444a 100644 --- a/app/controllers/installations_controller.rb +++ b/app/controllers/installations_controller.rb @@ -2,10 +2,23 @@ class InstallationsController < ApplicationController include RegisterHelper before_action :require_login + # app详情 + def app + @bot = Bot.find_by(uid: current_user.id) + end + def index @install_bots = BotInstall.where(:installer_id => current_user.id) end + def show + @install_bot = BotInstall.find params[:id] + end + + def repositories + @install_bots = BotInstall.where(:installer_id => current_user.id) + end + def update_secret ActiveRecord::Base.transaction do bot = Bot.find params[:id] @@ -25,6 +38,24 @@ class InstallationsController < ApplicationController render_ok end + def update_callback_url + bot = Bot.find params[:id] + application = Doorkeeper::Application.find_by(uid: bot.client_id, secret: bot.client_secret) + # application.redirect_uri = bot.callback_url + application.save + render_ok + end + + def suspended + @install_bot = BotInstall.find params[:id] + @install_bot.update_attributes!(state: 0) + render_ok + end + def unsuspended + @install_bot = BotInstall.find params[:id] + @install_bot.update_attributes!(state: 1) + render_ok + end def auth_active begin @bot = Bot.find params[:id] @@ -60,6 +91,7 @@ class InstallationsController < ApplicationController :expires_in => "604800", :use_refresh_token => true }) + @install_bot.update_attributes!(state: 1) render_ok(token: @access_token.token) end diff --git a/app/views/installations/app.json.jbuilder b/app/views/installations/app.json.jbuilder new file mode 100644 index 000000000..cc738e6b9 --- /dev/null +++ b/app/views/installations/app.json.jbuilder @@ -0,0 +1,4 @@ +json.partial! "commons/success" + +json.extract! @bot, :id, :bot_name, :bot_des, :webhook, :is_public, :logo, :state, :web_url, :install_num, :owner_id, :create_time, :update_time + diff --git a/app/views/installations/index.json.jbuilder b/app/views/installations/index.json.jbuilder index 3d64a3323..2163567ed 100644 --- a/app/views/installations/index.json.jbuilder +++ b/app/views/installations/index.json.jbuilder @@ -4,5 +4,8 @@ json.data do json.array! @install_bots do |install_bot| json.installation_id install_bot.id json.extract! install_bot.bot, :id, :name + json.bot_id install_bot.bot.id + json.bot_name install_bot.bot.name + end end \ No newline at end of file diff --git a/app/views/installations/repositories.json.jbuilder b/app/views/installations/repositories.json.jbuilder new file mode 100644 index 000000000..01e873378 --- /dev/null +++ b/app/views/installations/repositories.json.jbuilder @@ -0,0 +1,15 @@ +json.status 0 +json.message "success" +json.total_count @install_bots.size +json.repositories do + json.array! @install_bots do |install_bot| + project = Project.find_by(id: install_bot.store_id) + if project.present? + json.id install_bot.store_id + json.url "#{base_url}/#{project.owner.login}/#{project.owner.identifier}.git" + json.name project.owner.identifier + json.owner_name project.owner.login + json.is_public project.is_public + end + end +end \ No newline at end of file diff --git a/app/views/installations/show.json.jbuilder b/app/views/installations/show.json.jbuilder new file mode 100644 index 000000000..33c7ba206 --- /dev/null +++ b/app/views/installations/show.json.jbuilder @@ -0,0 +1,5 @@ +json.partial! "commons/success" + +json.extract! @install_bot, :id, :bot_id, :installer_id, :state, :create_time, :update_time +json.bot_name @install_bot.bot.name + diff --git a/config/routes.rb b/config/routes.rb index c544c9198..9c280e2bf 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1064,18 +1064,23 @@ Rails.application.routes.draw do resources :commit_logs, :only => [:create] scope '/app' do + get '/', to: 'installations#app' post ':id/auth_active', to: 'installations#auth_active' post ':id/update_private_key', to: 'installations#update_private_key' post ':id/update_secret', to: 'installations#update_secret' - resources :installations do - get :repositories, on: :collection + resources :installations, only: [:index, :show] do member do post :access_tokens - put :suspended + put :suspended, to: 'installations#suspended' + delete :suspended, to: 'installations#unsuspended' end end end + resources :installations, only: [] do + get :repositories, on: :collection + end + root 'main#index' From abaec8c1156475b0d77bbc5243de0b023c981d4f Mon Sep 17 00:00:00 2001 From: xxq250 Date: Wed, 29 Mar 2023 14:22:11 +0800 Subject: [PATCH 40/46] =?UTF-8?q?softbot=E8=A1=A5=E5=85=85=E5=92=8C?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=8E=A5=E5=8F=A3=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/installations/app.json.jbuilder | 5 +++-- app/views/installations/repositories.json.jbuilder | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/views/installations/app.json.jbuilder b/app/views/installations/app.json.jbuilder index cc738e6b9..598cd1725 100644 --- a/app/views/installations/app.json.jbuilder +++ b/app/views/installations/app.json.jbuilder @@ -1,4 +1,5 @@ json.partial! "commons/success" - -json.extract! @bot, :id, :bot_name, :bot_des, :webhook, :is_public, :logo, :state, :web_url, :install_num, :owner_id, :create_time, :update_time +if @bot.present? + json.extract! @bot, :id, :bot_name, :bot_des, :webhook, :is_public, :logo, :state, :web_url, :install_num, :owner_id, :create_time, :update_time +end diff --git a/app/views/installations/repositories.json.jbuilder b/app/views/installations/repositories.json.jbuilder index 01e873378..6d17f2770 100644 --- a/app/views/installations/repositories.json.jbuilder +++ b/app/views/installations/repositories.json.jbuilder @@ -6,8 +6,10 @@ json.repositories do project = Project.find_by(id: install_bot.store_id) if project.present? json.id install_bot.store_id - json.url "#{base_url}/#{project.owner.login}/#{project.owner.identifier}.git" - json.name project.owner.identifier + json.url "#{base_url}/#{project.owner.login}/#{project.identifier}.git" + json.identifier project.identifier + json.name project.name + json.description Nokogiri::HTML(project.description).text json.owner_name project.owner.login json.is_public project.is_public end From 7045fb3960b742e3fda3a0ba6f617a9a846d3939 Mon Sep 17 00:00:00 2001 From: xxq250 Date: Wed, 29 Mar 2023 16:57:19 +0800 Subject: [PATCH 41/46] =?UTF-8?q?oauth=20=E5=9B=9E=E8=B0=83=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E5=85=81=E8=AE=B8=E9=9D=9Ehttps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/initializers/doorkeeper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/doorkeeper.rb b/config/initializers/doorkeeper.rb index 0cc9a02a4..9655f88cc 100644 --- a/config/initializers/doorkeeper.rb +++ b/config/initializers/doorkeeper.rb @@ -285,7 +285,7 @@ Doorkeeper.configure do # #call can be used in order to allow conditional checks (to allow non-SSL # redirects to localhost for example). # - # force_ssl_in_redirect_uri !Rails.env.development? + force_ssl_in_redirect_uri false # # force_ssl_in_redirect_uri { |uri| uri.host != 'localhost' } From 3d61b920ace96af566e0a81bd5dac39680688667 Mon Sep 17 00:00:00 2001 From: xxq250 Date: Wed, 29 Mar 2023 17:29:42 +0800 Subject: [PATCH 42/46] =?UTF-8?q?=E5=90=8C=E6=AD=A5bot=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=EF=BC=8C=E5=9B=9E=E8=B0=83=E5=9C=B0=E5=9D=80=E5=92=8C=E5=90=8D?= =?UTF-8?q?=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/installations_controller.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/controllers/installations_controller.rb b/app/controllers/installations_controller.rb index fb819444a..66baf1050 100644 --- a/app/controllers/installations_controller.rb +++ b/app/controllers/installations_controller.rb @@ -38,10 +38,16 @@ class InstallationsController < ApplicationController render_ok end + # 同步bot信息,回调地址和名称 def update_callback_url bot = Bot.find params[:id] application = Doorkeeper::Application.find_by(uid: bot.client_id, secret: bot.client_secret) - # application.redirect_uri = bot.callback_url + application.redirect_uri = bot.oauth_callback_url + application.name = bot.name + if bot.uid.present? + bot_user = User.find_by(id: bot.uid) + bot_user.update_column(:nickname, bot.name) if bot_user.present? + end application.save render_ok end @@ -66,7 +72,7 @@ class InstallationsController < ApplicationController @bot.owner_id = current_user.id ActiveRecord::Base.transaction do # 注册bot对应oauth应用 - Doorkeeper::Application.create!(name: @bot.name, uid: @bot.client_id, secret: @bot.client_secret, redirect_uri: "https://gitlink.org.cn") + Doorkeeper::Application.create!(name: @bot.name, uid: @bot.client_id, secret: @bot.client_secret, redirect_uri: @bot.oauth_callback_url) # 注册bot对应用户 result = autologin_register(User.generate_user_login('b'), nil, "#{SecureRandom.hex(6)}", 'bot', nil, @bot.name) tip_exception(-1, result[:message]) if result[:message].present? From 0e009202fcf0862343655714bd0c4112085fc24e Mon Sep 17 00:00:00 2001 From: xxq250 Date: Wed, 29 Mar 2023 17:58:52 +0800 Subject: [PATCH 43/46] =?UTF-8?q?=E5=90=8C=E6=AD=A5bot=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=EF=BC=8C=E5=9B=9E=E8=B0=83=E5=9C=B0=E5=9D=80=E5=92=8C=E5=90=8D?= =?UTF-8?q?=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/routes.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/routes.rb b/config/routes.rb index 9c280e2bf..fb4e6185c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1068,6 +1068,7 @@ Rails.application.routes.draw do post ':id/auth_active', to: 'installations#auth_active' post ':id/update_private_key', to: 'installations#update_private_key' post ':id/update_secret', to: 'installations#update_secret' + post ':id/update_callback_url', to: 'installations#update_callback_url' resources :installations, only: [:index, :show] do member do post :access_tokens From 4fdb28ec3c7a47d43ddf720eb2ba6f76a5274c46 Mon Sep 17 00:00:00 2001 From: xxq250 Date: Wed, 29 Mar 2023 18:13:17 +0800 Subject: [PATCH 44/46] =?UTF-8?q?bot=E6=8E=88=E6=9D=83token=E6=9C=89?= =?UTF-8?q?=E6=95=88=E6=9C=9F=E6=94=B9=E4=B8=BA30=E5=A4=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/installations_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/installations_controller.rb b/app/controllers/installations_controller.rb index 66baf1050..f7bf4f0d6 100644 --- a/app/controllers/installations_controller.rb +++ b/app/controllers/installations_controller.rb @@ -94,7 +94,7 @@ class InstallationsController < ApplicationController @access_token = Doorkeeper::AccessToken.create!({ :application_id => @application.id, :resource_owner_id => @bot.uid, :scopes => "public write", - :expires_in => "604800", + :expires_in => "2592000", :use_refresh_token => true }) @install_bot.update_attributes!(state: 1) From e1b17d1dfa99af8b22a4721f521ec9a54be73a55 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 30 Mar 2023 11:44:39 +0800 Subject: [PATCH 45/46] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9Awebhook?= =?UTF-8?q?=E7=B1=BB=E5=9E=8Bsoftbot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/api/v1/projects/webhooks/create_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/api/v1/projects/webhooks/create_service.rb b/app/services/api/v1/projects/webhooks/create_service.rb index edc8b2263..a6ee5e6c1 100644 --- a/app/services/api/v1/projects/webhooks/create_service.rb +++ b/app/services/api/v1/projects/webhooks/create_service.rb @@ -8,7 +8,7 @@ class Api::V1::Projects::Webhooks::CreateService < ApplicationService validates :active, inclusion: {in: [true, false]} validates :http_method, inclusion: { in: %w(POST GET), message: "请输入正确的请求方式"} validates :content_type, inclusion: { in: %w(json form), message: "请输入正确的Content Type"} - validates :type, inclusion: {in: %w(gitea slack discord dingtalk telegram msteams feishu matrix jianmu), message: "请输入正确的Webhook Type"} + validates :type, inclusion: {in: %w(gitea slack discord dingtalk telegram msteams feishu matrix jianmu softbot), message: "请输入正确的Webhook Type"} def initialize(project, params, token=nil) @project = project @owner = project&.owner.login From 428864952896822ee8c83d0c4c8b449ab2113cf2 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 30 Mar 2023 14:34:17 +0800 Subject: [PATCH 46/46] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9A=E8=B4=A1?= =?UTF-8?q?=E7=8C=AE=E5=8D=A0=E6=AF=94=E5=8C=BA=E5=9D=97=E9=93=BE=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E9=9C=80=E8=A6=81=E5=85=A8=E5=B1=80=E5=BC=80=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/concerns/watchable.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/concerns/watchable.rb b/app/models/concerns/watchable.rb index 31093cad1..6d3d94e66 100644 --- a/app/models/concerns/watchable.rb +++ b/app/models/concerns/watchable.rb @@ -39,7 +39,7 @@ module Watchable (count_user * 1.0 / (count_all + 0.000000001)).round(5) end - if (@project['use_blockchain'] == true or @project['use_blockchain'] == 1) && @user.id.present? + if Site.has_blockchain? && (@project['use_blockchain'] == true or @project['use_blockchain'] == 1) && @user.id.present? balance_user = Blockchain::BalanceQueryOneProject.call({"user_id": @user.id, "project_id": @project.id}) balance_all = Blockchain::RepoBasicInfo.call({"project_id": @project.id})["cur_supply"] score = cal_perc(balance_user, balance_all)