lib/vatbook.rb in vatbook-0.1.0 vs lib/vatbook.rb in vatbook-0.2.0

- old
+ new

@@ -1,119 +1,15 @@ -require "vatbook/version" +%w{vatbook/version vatbook/book_fetcher vatbook/booking}.each { |lib| require lib } class String def vatbook(args={}) Vatbook.bookings(self, args) end end module Vatbook + def self.bookings(fir, args) BookFetcher.new(fir, args).fetch end - class BookFetcher - require 'nokogiri' - require 'open-uri' - - attr_accessor :fir, :atc_bookings, :pilot_bookings, :enroute, :doc - - def initialize(fir, args = nil) - @fir = fir.upcase - @enroute = true - process_arguments(args) if args.class == Hash - @atc_bookings = []; @pilot_bookings = []; - @doc = raw_list - atcs - pilots - end - - def raw_list - Nokogiri::XML(open("http://vatbook.euroutepro.com/xml2.php?fir=#{@fir}")) - end - - def fetch - {:atc => atc_bookings, :pilots => pilot_bookings} - end - - def atc_bookings - @atc_bookings - end - - def pilot_bookings - @pilot_bookings - end - - def atcs_count - @doc.css("atcs booking").count - end - - def pilots_count - @doc.css("pilots booking").count - end - - private - - def atcs - @doc.css("atcs booking").each do |booking| - @atc_bookings << Booking.new(booking, role = "atc", @fir) - end - end - - def pilots - @doc.css("pilots booking").each do |booking| - if @enroute == false - bk = Booking.new(booking, role = "pilot", @fir) - if bk.enroute == false - @pilot_bookings << bk - end - else - @pilot_bookings << Booking.new(booking, role = "pilot", @fir) - end - end - end - - def process_arguments(args) - args[:enroute] == false ? @enroute = false : @enroute = true - end - - end - - class Booking - require 'nokogiri' - - attr_accessor :role, :callsign, :name, :cid, :start, :end, :dep, :arr - attr_accessor :aircraft, :route, :enroute, :fir - - - def initialize(booking, role, fir) - @fir = fir - @role = role - @callsign = booking.children.css("callsign").first.children.to_s - @name = booking.children.css("name").first.children.to_s - @role == "atc" ? @cid = booking.children.css("cid").first.children.to_s : @cid = booking.children.css("pid").first.children.to_s - if @role == "atc" - @start = booking.children.css("time_start").first.children.to_s - @end = booking.children.css("time_end").first.children.to_s - elsif @role == "pilot" - @dep = booking.children.css("dep").first.children.to_s - @arr = booking.children.css("arr").first.children.to_s - @route = booking.children.css("route").first.children.to_s.gsub(/[\n]/, ' ').strip - @start = booking.children.css("from").first.children.to_s - @end = booking.children.css("to").first.children.to_s - @aircraft = booking.children.css("actype").first.children.to_s - check_enroute - end - end - - private - def check_enroute - if @fir[0..1] == @dep[0..1] or @fir[0..1] == @arr[0..1] - @enroute = false - else - @enroute = true - end - end - - end - -end +end \ No newline at end of file