| @@ -24,8 +24,14 @@ module Gitea | |||||
| def run | def run | ||||
| Contents::CreateForm.new(valid_params).validate! | Contents::CreateForm.new(valid_params).validate! | ||||
| response = Gitea::Repository::Entries::CreateService.new(token, owner, @params[:identifier], @params[:filepath], file_params).call | |||||
| render_result(response) | |||||
| result = Gitea::Repository::Entries::CreateService.call(token, | |||||
| owner, @params[:identifier], @params[:filepath], file_params) | |||||
| if result[:status] == :success | |||||
| @result = result[:body] | |||||
| else | |||||
| fail!(result[:message]) | |||||
| end | |||||
| rescue Exception => exception | rescue Exception => exception | ||||
| Rails.logger.info "Exception ===========> #{exception.message}" | Rails.logger.info "Exception ===========> #{exception.message}" | ||||
| fail!(exception.message) | fail!(exception.message) | ||||
| @@ -214,6 +214,14 @@ class Gitea::ClientService < ApplicationService | |||||
| [body, message] | [body, message] | ||||
| end | end | ||||
| def json_parse!(body) | |||||
| return nil unless body.present? | |||||
| body = JSON.parse(body) | |||||
| body, message = fix_body(body) | |||||
| body | |||||
| end | |||||
| def log_error(status, body) | def log_error(status, body) | ||||
| puts "[gitea] status: #{status}" | puts "[gitea] status: #{status}" | ||||
| puts "[gitea] body: #{body&.force_encoding('UTF-8')}" | puts "[gitea] body: #{body&.force_encoding('UTF-8')}" | ||||
| @@ -30,8 +30,7 @@ class Gitea::Repository::Entries::CreateService < Gitea::ClientService | |||||
| def call | def call | ||||
| response = post(url, params) | response = post(url, params) | ||||
| render_201_response(response) | |||||
| response_payload(response) | |||||
| end | end | ||||
| private | private | ||||
| @@ -43,4 +42,21 @@ class Gitea::Repository::Entries::CreateService < Gitea::ClientService | |||||
| "/repos/#{owner}/#{repo_name}/contents/#{filepath}".freeze | "/repos/#{owner}/#{repo_name}/contents/#{filepath}".freeze | ||||
| end | end | ||||
| def response_payload(response) | |||||
| status = response.status | |||||
| body = response&.body | |||||
| log_error(status, body) | |||||
| status_payload(status, body) | |||||
| end | |||||
| def status_payload(status, body) | |||||
| case status | |||||
| when 201 then success(json_parse!(body)) | |||||
| when 403 then error("你没有权限操作!") | |||||
| when 404 then error("你操作的链接不存在!") | |||||
| when 422 then error("#{filepath}文件已存在,不能重复创建!") | |||||
| else error("系统错误!") | |||||
| end | |||||
| end | |||||
| end | end | ||||