From 2600eacb348e573fcd8e8c9d52adaa7c86d6707d Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 9 Mar 2023 16:10:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E6=B7=B7=E5=90=88?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=AD=97=E6=AE=B5=E7=BC=96=E7=A0=81=E9=9B=86?= =?UTF-8?q?=E6=9B=B4=E6=94=B9=E4=BB=A5=E5=8F=8Agitea=20service=E7=BC=BA?= =?UTF-8?q?=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/gitea/commit/diff_service.rb | 40 +++++++++++++++++++ app/services/gitea/commit/info_service.rb | 39 ++++++++++++++++++ ...9080338_change_user_mixin_field_collate.rb | 6 +++ 3 files changed, 85 insertions(+) create mode 100644 app/services/gitea/commit/diff_service.rb create mode 100644 app/services/gitea/commit/info_service.rb create mode 100644 db/migrate/20230309080338_change_user_mixin_field_collate.rb diff --git a/app/services/gitea/commit/diff_service.rb b/app/services/gitea/commit/diff_service.rb new file mode 100644 index 000000000..712302505 --- /dev/null +++ b/app/services/gitea/commit/diff_service.rb @@ -0,0 +1,40 @@ +# get the diff info for the commit +class Gitea::Commit::DiffService < Gitea::ClientService + attr_reader :owner, :repo, :sha, :token + + # GET /repos/{owner}/{repo}/commits/{sha}/diff + # owner: 用户 + # repo: 仓库名称/标识 + # sha: commit唯一标识 + # eg: + # Gitea::Commit::DiffService.call('jasder', 'repo_identifier', 'sha value') + def initialize(owner, repo, sha, token=nil) + @owner = owner + @repo = repo + @sha = sha + @token = token + end + + def call + response = get(url, params) + render_result(response) + end + + private + def params + Hash.new.merge(token: token) + end + + def url + "/repos/#{owner}/#{repo}/commits/#{sha}/diff".freeze + end + + def render_result(response) + case response.status + when 200 + JSON.parse(response.body) + else + nil + end + end +end diff --git a/app/services/gitea/commit/info_service.rb b/app/services/gitea/commit/info_service.rb new file mode 100644 index 000000000..d337071e8 --- /dev/null +++ b/app/services/gitea/commit/info_service.rb @@ -0,0 +1,39 @@ +class Gitea::Commit::InfoService < Gitea::ClientService + attr_reader :owner, :repo, :sha, :token + + # GET /repos/{owner}/{repo}/commits/{sha}/diff + # owner: 用户 + # repo: 仓库名称/标识 + # sha: commit唯一标识 + # eg: + # Gitea::Commit::InfoService.call('jasder', 'repo_identifier', 'sha value', token='gitea token') + def initialize(owner, repo, sha, token=nil) + @owner = owner + @repo = repo + @sha = sha + @token = token + end + + def call + response = get(url, params) + render_result(response) + end + + private + def params + Hash.new.merge(token: token) + end + + def url + "/repos/#{owner}/#{repo}/git/commits/#{sha}".freeze + end + + def render_result(response) + case response.status + when 200 + JSON.parse(response.body) + else + nil + end + end +end \ No newline at end of file diff --git a/db/migrate/20230309080338_change_user_mixin_field_collate.rb b/db/migrate/20230309080338_change_user_mixin_field_collate.rb new file mode 100644 index 000000000..1899d43fe --- /dev/null +++ b/db/migrate/20230309080338_change_user_mixin_field_collate.rb @@ -0,0 +1,6 @@ +class ChangeUserMixinFieldCollate < ActiveRecord::Migration[5.2] + def change + execute("ALTER TABLE `users` MODIFY `login` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;") + execute("ALTER TABLE `users` MODIFY `mail` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;") + end +end