class MTG::QueryBuilder
Attributes
query[RW]
type[RW]
Public Class Methods
new(type)
click to toggle source
# File lib/mtg_sdk/query_builder.rb, line 6 def initialize(type) @type = type @query = {} end
Public Instance Methods
all()
click to toggle source
Get all resources from a query by paging through data
@return [Array<Object>] Array of resources
# File lib/mtg_sdk/query_builder.rb, line 37 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] raise ArgumentError, 'Unavailable Service' if unavailable_service?(response) 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
find(id)
click to toggle source
Find a single resource by the resource id
@param id [String] the resource id @return [Object] the Type
object response
# File lib/mtg_sdk/query_builder.rb, line 24 def find(id) response = RestClient.get("#{@type.Resource}/#{id}") singular_resource = @type.Resource[0...-1] raise ArgumentError, 'Resource not found' if response.body[singular_resource].nil? raise ArgumentError, 'Unavailable Service' if unavailable_service?(response) type.new.from_json(response.body[singular_resource].to_json) end
where(args)
click to toggle source
Adds a parameter to the hash of query parameters
@param args [Hash] the query parameter @return [QueryBuilder] the QueryBuilder
# File lib/mtg_sdk/query_builder.rb, line 15 def where(args) @query.merge!(args) self end