module Gitea class CreateFileInteractor def self.call(token, owner, params={}) interactor = new(token, owner, params) interactor.run interactor end attr_reader :error, :result def initialize(token, owner, params) @token = token @owner = owner @params = params end def success? @error.nil? end def result @result end def run Contents::CreateForm.new(valid_params).validate! result = Gitea::Repository::Entries::CreateService.call(token, owner, @params[:identifier], file_path, file_params) if result[:status] == :success @result = result[:body] else fail!(result[:message]) end rescue Exception => exception Rails.logger.info "Exception ===========> #{exception.message}" fail!(exception.message) end private attr_reader :params, :owner, :token def fail!(error) @error = error end def render_result(response) @result = response end def file_path if @params[:base64_filepath].present? Base64.decode64(params[:base64_filepath]) else @params[:filepath] end end def valid_params { filepath: file_path, branch: @params[:branch], new_branch: @params[:new_branch] } end def file_params file_params = {} file_params = file_params.merge(branch: @params[:branch]) unless @params[:branch].blank? file_params = file_params.merge(new_branch: @params[:new_branch]) unless @params[:new_branch].blank? file_params = file_params.merge(content: @params[:content] || "") file_params = file_params.merge(message: @params[:message]) unless @params[:message].blank? file_params = file_params.merge(committer: @params[:committer]) file_params end end end