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.4.0"

Class Method Summary collapse

Class Method Details

.allObject



36
37
38
39
40
41
# File 'lib/airports.rb', line 36

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



8
9
10
11
12
13
14
15
16
17
# File 'lib/airports.rb', line 8

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



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/airports.rb', line 19

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



32
33
34
# File 'lib/airports.rb', line 32

def self.iata_codes
  parsed_data.keys
end

.parsed_dataObject



43
44
45
# File 'lib/airports.rb', line 43

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