module Repositories class EntriesInteractor def self.call(user, identifier, filepath, **args) interactor = new(user, identifier, filepath, **args) interactor.run interactor end attr_reader :error, :result def initialize(user, identifier, filepath, **args) @user = user @identifier = identifier @filepath = filepath @args = args end def success? @error.nil? end def result @result end def run Repositories::SearchSubEntriesForm.new({login: user.login, repo_identifier: identifier, filepath: filepath}).validate! sub_entries = Gitea::Repository::Entries::GetService.new(@user, @identifier, @filepath, @args).call render_result(sub_entries) rescue Exception => exception fail!(exception.message) end private attr_reader :user, :identifier, :filepath, :args def fail!(error) @error = error end def render_result(response) @result = response end end end