Sha256: 34a2af3395fa258366df1f23cf959b0b1aa5f8926268e0c1470fa8671e5a18ad
Contents?: true
Size: 1.62 KB
Versions: 2
Compression:
Stored size: 1.62 KB
Contents
require_relative 'rest_client' module Pokemon class QueryBuilder include RestClient attr_accessor :type, :query def initialize(type) @type = type @query = {} end # Adds a parameter to the hash of query parameters # # @param args [Hash] the query parameter # @return [QueryBuilder] the QueryBuilder def where(args) @query.merge!(args) self end # Find a single resource by the resource id # # @param id [String] the resource id # @return [Object] the Type object response def find(id) response = RestClient.get("#{@type.Resource}/#{id}") singular_resource = @type.Resource[0...-1] if response.body[singular_resource].nil? raise ArgumentError, 'Resource not found' end type.new.from_json(response.body[singular_resource].to_json) end # Get all resources from a query by paging through data # # @return [Array<Object>] Array of resources def all list = [] page = 1 fetch_all = true if @query.has_key?(:page) page = @query[:page] fetch_all = false end while true response = RestClient.get(@type.Resource, @query) data = response.body[@type.Resource] if !data.empty? data.each {|item| list << @type.new.from_json(item.to_json)} if !fetch_all break else where(page: page += 1) end else break end end return list end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pokemon_tcg_sdk-2.5.0 | lib/pokemon_tcg_sdk/query_builder.rb |
pokemon_tcg_sdk-2.4.0 | lib/pokemon_tcg_sdk/query_builder.rb |