class ElderScrollsLegends::QueryBuilder

Attributes

query[RW]
type[RW]

Public Class Methods

new(type) click to toggle source
# File lib/elder_scrolls_legends_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/elder_scrolls_legends_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]      
    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/elder_scrolls_legends_sdk/query_builder.rb, line 24
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
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/elder_scrolls_legends_sdk/query_builder.rb, line 15
def where(args)
  @query.merge!(args)
  self.all
end

Private Instance Methods

snake_to_camel_case(str) click to toggle source
# File lib/elder_scrolls_legends_sdk/query_builder.rb, line 68
def snake_to_camel_case(str)
  str.to_s.split('_').inject { |m, p| m + p.capitalize }
end