lib/billomat/search.rb in billomat-0.2.0 vs lib/billomat/search.rb in billomat-0.3.0
- old
+ new
@@ -1,40 +1,37 @@
# frozen_string_literal: true
require 'uri'
module Billomat
- ##
- # This class provides the possibility to query the resources
+ # This class provides the possibility to query the resources.
class Search
- ##
- # Creates a new search object
+ # Creates a new search object.
#
# @param [Class] resource The resource class to be queried
# @param [Hash] hash The query
def initialize(resource, hash)
@resource = resource
@hash = hash
end
- # @return [String] The path including the query
+ # @return [String] the path including the query
def path
"#{@resource.base_path}?#{hash_to_query}"
end
- ##
- # Runs the query and calls the gateway
- # Currently it will always return an empty array when no query is provided
+ # Runs the query and calls the gateway.
+ # Currently it will always return an empty array when no query is provided.
#
# @return [Array<Billomat::Model::Base>]
def run
- return [] if @hash.reject { |k, v| v.nil? }.empty?
+ return [] if @hash.reject { |_k, v| v.nil? }.empty?
+
to_array(Billomat::Gateway.new(:get, path).run)
end
- ##
- # Corrects the response to always return an array
+ # Corrects the response to always return an array.
#
# @todo Due to a strange API behaviour we have to fix the reponse here.
# This may be fixed in a new API version.
#
# @param [Hash] resp The response from the gateway
@@ -51,24 +48,25 @@
@resource.new(c)
end
end
end
- # @return [String] The name of the resource
+ # @return [String] the name of the resource
def name
@resource.resource_name
end
# @param [Hash] resp The response from the gateway
- # @return [Integer] The number of records found
+ # @return [Integer] the number of records found
def count(resp)
return 0 if resp.nil?
+
resp["#{name}s"]['@total'].to_i
end
private
- # @return [String] The query as www encoded string
+ # @return [String] the query as www encoded string
def hash_to_query
URI.encode_www_form(@hash)
end
end
end