class VinQuery::Query

Attributes

response_xml[R]
trim_levels[R]
url[R]
vin[R]

Public Class Methods

new(vin, options={}) click to toggle source
# File lib/vin_query/query.rb, line 8
def initialize(vin, options={})
  VinQuery.configuration.merge_options(options)
  @vin = vin
  @trim_levels = []
  build_url
end

Public Instance Methods

get() click to toggle source
# File lib/vin_query/query.rb, line 59
def get
  @response_xml = fetch(@url)
  parse(@response_xml) if validate(@response_xml)
end
parse(xml) click to toggle source
# File lib/vin_query/query.rb, line 31
def parse(xml)
  doc = Nokogiri::XML(xml)
  raise ParseError if doc.xpath('//VINquery/VIN/Vehicle').size == 0

  results_vin = doc.xpath('//VINquery/VIN').first
  doc.xpath('//VINquery/VIN/Vehicle').each do |v|
    vehicle = {}

    v.xpath('Item').each do |a|
      key = a.attributes['Key'].to_s.
                                downcase.
                                gsub('/', '_').
                                gsub(' ', '_').
                                gsub('-', '_').
                                gsub('.', '').
                                to_sym

      if a.attributes['Unit'].to_s.length == 0
        vehicle[key] = a.attributes['Value'].to_s
      else
        vehicle[key] = "#{a.attributes['Value'].to_s} #{a.attributes['Unit'].to_s}"
      end
    end

    @trim_levels.push(VinQuery::TrimLevel.new(results_vin.attributes['Number'].to_s, vehicle))
  end
end
valid?() click to toggle source
# File lib/vin_query/query.rb, line 15
def valid?
  @valid
end
validate(xml) click to toggle source
# File lib/vin_query/query.rb, line 19
def validate(xml)
  doc = Nokogiri::XML(xml)
  raise ValidationError if doc.xpath('//VINquery/VIN').size == 0

  results_vin = doc.xpath('//VINquery/VIN').first
  if results_vin.attributes['Status'].to_s == 'SUCCESS'
    @valid = true
  else
    @valid = false
  end
end

Private Instance Methods

build_url() click to toggle source
# File lib/vin_query/query.rb, line 66
def build_url
  url = VinQuery.configuration.url
  access_code = VinQuery.configuration.access_code
  report_type = VinQuery.configuration.report_type

  @url = "#{url}?accessCode=#{access_code}&vin=#{vin}&reportType=#{report_type}"
end
fetch(url) click to toggle source
# File lib/vin_query/query.rb, line 74
def fetch(url)
  Net::HTTP.get(URI.parse(url))
end