diff --git a/lib/import/otrs/requester.rb b/lib/import/otrs/requester.rb index 69b1d4fb2..7c1791022 100644 --- a/lib/import/otrs/requester.rb +++ b/lib/import/otrs/requester.rb @@ -6,35 +6,63 @@ module Import # rubocop:disable Style/ModuleFunction extend self - def load(object, args = {}) + # Loads entries of the given object. + # + # @param object [String] the name of OTRS object + # @param [Hash] opts the options to load entries. + # @option opts [String] :limit the maximum amount of entries that should get loaded + # @option opts [String] :offset the offset where the entry listing should start + # @option opts [Boolean] :diff request only changed/added entries since the last import + # + # @example + # Import::OTRS::Requester.load('State', offset: '0', limit: '50') + # #=> [{'Name':'pending reminder', ...}, ...] + # + # @return [Array String, Number, nil, Hash, Array}>] + def load(object, opts = {}) @cache ||= {} - if args.empty? && @cache[object] + if opts.empty? && @cache[object] return @cache[object] end result = request_result( Subaction: 'Export', Object: object, - Limit: args[:limit] || '', - Offset: args[:offset] || '', - Diff: args[:diff] ? 1 : 0 + Limit: opts[:limit] || '', + Offset: opts[:offset] || '', + Diff: opts[:diff] ? 1 : 0 ) - return result if !args.empty? + return result if !opts.empty? @cache[object] = result @cache[object] end + # Lists the OTRS objects and their amount of importable entries. + # + # @example + # Import::OTRS::Requester.list #=> {'DynamicFields' => 5, ...} + # + # @return [Hash{String => Number}] key = OTRS object, value = amount def list request_result(Subaction: 'List') end - # TODO: refactor to something like .connected? + # Checks if the connection to the OTRS export endpoint works. + # + # @todo Refactor to something like .connected? + # + # @example + # Import::OTRS::Requester.connection_test #=> true + # + # @raise [RuntimeError] if the API key is not valid + # + # @return [true] always returns true def connection_test result = request_json({}) - return true if result['Success'] - raise 'API key not valid!' + raise 'API key not valid!' if !result['Success'] + true end private @@ -47,10 +75,8 @@ module Import def request_json(params) response = post(params) result = handle_response(response) - - return result if result - - raise 'Invalid response' + raise 'Invalid response' if !result + result end def handle_response(response)