class Rubillow::Models::Base

Base class for data models

Attributes

code[RW]

@return [Integer] response code

message[RW]

@return [String] response message

near_limit[RW]

@return [Boolean] nearing API's daily request limit

parser[RW]

@private @return [Nokogiri::XML::Reader] xml parser

xml[RW]

@return [String] the raw XML content from the service

Public Class Methods

new(xml) click to toggle source

@private Initialize the model

@param [String] xml the raw XML from the service

# File lib/rubillow/models.rb, line 31
def initialize(xml)
  if !empty?(xml)
    @xml = xml
    @parser = Nokogiri::XML(xml) { |cfg| cfg.noblanks }
    parse
  else
    @code = -1
    @message = 'Error connecting to remote service.'
  end
end

Public Instance Methods

success?() click to toggle source

Was the request successful? @return [Boolean] true on successful request

# File lib/rubillow/models.rb, line 44
def success?
  @code.to_i == 0
end

Protected Instance Methods

empty?(elm) click to toggle source
# File lib/rubillow/models.rb, line 60
def empty?(elm)
  elm.respond_to?(:empty?) ? elm.empty? : !elm
end
parse() click to toggle source

@private Parses the xml content

# File lib/rubillow/models.rb, line 52
def parse
  @message = @parser.xpath('//message/text').text
  @code = @parser.xpath('//message/code').text.to_i
  
  limit = @parser.xpath('//message/limit-warning')
  @near_limit = !limit.empty? && limit.text.downcase == "true"
end