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.2.0".freeze

Class Method Summary collapse

Class Method Details

.allObject



33
34
35
36
37
38
# File 'lib/airports.rb', line 33

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
13
14
# File 'lib/airports.rb', line 6

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

  return unless airport_data

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

.find_by_icao_code(icao_code) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/airports.rb', line 16

def self.find_by_icao_code(icao_code)
  return unless icao_code.length == 4

  airport_data = parsed_data.values.find do |data|
    data["icao"] == icao_code
  end

  return unless airport_data

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

.iata_codesObject



29
30
31
# File 'lib/airports.rb', line 29

def self.iata_codes
  parsed_data.keys
end

.parsed_dataObject



40
41
42
# File 'lib/airports.rb', line 40

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