Sha256: 04093eeea575ee0012c542ee1f0838bd78d0e0f209e8c8eaff2d8301b09a5159

Contents?: true

Size: 1.45 KB

Versions: 1

Compression:

Stored size: 1.45 KB

Contents

# frozen_string_literal: true

module Skyscanner
  # Route info
  class Route
    attr_reader :meta
    attr_reader :flights

    def initialize(data)
      @meta = RouteMeta.new(data[:meta])
      @flights = data[:flights]
    end

    def self.find(meta)
      route_info = RouteInfo.find(meta)
      data = {
        meta: meta,
        flights: route_info.parse_flights
      }
      new(data)
    end

    def to_json
      { meta: @meta.to_json, flights: @flights.to_json }
    end
  end

  # Flight info
  class Flight
    attr_reader :carriers, :min_price, :direct, :date
    attr_reader :origin, :destination

    def initialize(data)
      @min_price = data[:min_price]
      @direct = data[:direct]
      @carriers = data[:carriers]
      @origin = data[:origin]
      @destination = data[:destination]
      @date = data[:date]
    end

    def to_json
      { min_price: @min_price, direct: @direct, carriers: @carriers,
        origin: @origin.to_json, destination: @destination.to_json,
        date: @date }
    end

  end

  # Place info
  class Place
    attr_reader :name, :city_name, :country_name
    attr_reader :type

    def initialize(data)
      @name = data['Name']
      @city_name = data['CityName']
      @country_name = data['CountryName']
      @type = data['Type']
    end

    def self.find(data)
      new(data)
    end

    def to_json
      { name: @name, city_name: @city_name, country_name: @country_name,
        type: @type }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
movlog-0.3.9 lib/movlog/route.rb