diff --git a/app/services/gitea/client_service.rb b/app/services/gitea/client_service.rb index 4fdf51b92..6723fa248 100644 --- a/app/services/gitea/client_service.rb +++ b/app/services/gitea/client_service.rb @@ -36,6 +36,15 @@ class Gitea::ClientService < ApplicationService render_status(response) end + def delete(url, params={}) + auth_token = authen_params(params[:token]) + response = conn(auth_token).delete do |req| + req.url full_url(url) + req.body = params[:data].to_json + end + render_status(response) + end + private def conn(auth={}) username = auth[:username] || access_key_id @@ -99,6 +108,8 @@ class Gitea::ClientService < ApplicationService puts "[gitea] parse body: #{result}" # return {status: -1, message: result[0]} raise Error, result[0] + when 204 + raise Error, "[gitea] delete ok" else result = JSON.parse(response&.body) message = result['message'] diff --git a/app/services/gitea/repository/delete_service.rb b/app/services/gitea/repository/delete_service.rb new file mode 100644 index 000000000..eee6ca6d6 --- /dev/null +++ b/app/services/gitea/repository/delete_service.rb @@ -0,0 +1,22 @@ +class Gitea::Repository::DeleteService < Gitea::ClientService + attr_reader :user, :repo_name + + def initialize(user, repo_name) + @user = user + @repo_name = repo_name + end + + def call + delete(url, params) + end + + private + + def params + Hash.new.merge(token: user.gitea_token) + end + + def url + "/repos/#{user.login}/#{repo_name}".freeze + end +end