class VehicleDataMn
Public Class Methods
read(plate, format = nil)
click to toggle source
# File lib/vehicle_data_mn.rb, line 8 def self.read(plate, format = nil) plate = plate.to_s.gsub(/\s+/, "") plate_num = plate[0..3].rjust(4, "0") plate_ser = plate[4..6] url = 'https://www.transdep.mn/homepage/i_result.php?search_vehicle=Y&byPlateno='+CGI.escape(plate_num + plate_ser) # retry if tcp connection failed begin retries ||= 0 doc = Nokogiri::HTML(open(url)) rescue sleep(15) retry if (retries += 1) < 3 end # no result if doc.xpath('//center/font/text()').to_s.strip == 'Тохирох мэдээлэл олдсонгүй' result = { :result => nil } else vin = doc.xpath('//table/tr[2]/td[2]/text()').to_s.strip maker = doc.xpath('//table/tr[3]/td[2]/text()').to_s.strip model = doc.xpath('//table/tr[4]/td[2]/text()').to_s.strip reinspect = doc.xpath('//table/tr[5]/td[2]/text()').to_s.strip result = { :result => { :plate_ser => plate_ser, :plate_num => plate_num, :vin => vin, :maker => maker, :model => model, :next_inspection => reinspect.empty? ? 'NULL' : "'"+Date.parse(reinspect).to_s+"'" } } end unless format.to_s.downcase == 'json' return result else return result.to_json end end