Module: Airports

Defined in:
lib/airports.rb,
lib/airports/airport.rb,
lib/airports/version.rb

Defined Under Namespace

Classes: Airport

Constant Summary collapse

VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.allObject



18
19
20
21
22
23
# File 'lib/airports.rb', line 18

def self.all
  @all ||= parsed_data.map do |_iata_code, airport_data|
    Airport.
      new(airport_data.each_with_object({}) { |(k,v), h| h[k.to_sym] = v })
  end
end

.find_by_iata_code(iata_code) ⇒ Object



6
7
8
9
10
11
12
# File 'lib/airports.rb', line 6

def self.find_by_iata_code(iata_code)
  return unless iata_code.length == 3
  return unless airport_data = parsed_data.fetch(iata_code, nil)

  Airport.
    new(airport_data.each_with_object({}) { |(k,v), h| h[k.to_sym] = v })
end

.iata_codesObject



14
15
16
# File 'lib/airports.rb', line 14

def self.iata_codes
  parsed_data.keys
end

.parsed_dataObject



25
26
27
# File 'lib/airports.rb', line 25

def self.parsed_data
  @parsed_data ||= JSON.parse(data)
end