module Gitea class CreateFileInteractor def self.call(user, params={}) interactor = new(user, params) interactor.run interactor end attr_reader :error, :result def initialize(user, params) @user = user @params = params end def success? @error.nil? end def result @result end def run Contents::CreateForm.new(valid_params).validate! response = Gitea::Repository::Entries::CreateService.new(user, @params[:repo_identifier], @params[:filepath], file_params).call render_result(response) rescue Exception => exception Rails.logger.info "Exception ===========> #{exception.message}" fail!(exception.message) end private attr_reader :params, :user def fail!(error) @error = error end def render_result(response) @result = response end def valid_params { login: @params[:login], repo_identifier: @params[:repo_identifier], filepath: @params[:filepath], 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: Base64.encode64(@params[:content])) file_params = file_params.merge(message: @params[:message]) unless @params[:message].blank? end end end