Class: FaaApra::Service
- Inherits:
-
Object
- Object
- FaaApra::Service
- Defined in:
- lib/faa_apra/service.rb
Overview
Service to interact with FAA’s Aeronautic Product Release API (APRA) external-api.faa.gov/apra
This service provides access to FAA aeronautical chart publication download endpoints including Coded Instrument Flight Procedures, Digital Enroute Charts, Terminal Procedures, and more.
Constant Summary collapse
- BASE_URL =
"https://external-api.faa.gov/apra"
Instance Attribute Summary collapse
-
#client_id ⇒ Object
readonly
Returns the value of attribute client_id.
-
#client_secret ⇒ Object
readonly
Returns the value of attribute client_secret.
Instance Method Summary collapse
-
#cifp_chart(edition: 'current') ⇒ Hash
Get CIFP chart download link.
-
#cifp_info(edition: 'current') ⇒ Hash
Get CIFP edition date and edition number.
-
#ddof_chart ⇒ Hash
Get Daily Digital Obstacle File download link.
-
#ddof_info ⇒ Hash
Get Daily Digital Obstacle File edition information.
-
#dec_chart(edition: 'current') ⇒ Hash
Get Digital Enroute Chart download link.
-
#dec_info(edition: 'current') ⇒ Hash
Get DEC edition date and edition number.
-
#dtpp_chart(edition: 'current', area: 'US', format: 'all') ⇒ Hash
Get Terminal Procedure Publication chart download information.
-
#dtpp_info(edition: 'current', area: 'US') ⇒ Hash
Get Terminal Procedure Publication chart edition information.
-
#grand_canyon_chart(edition: 'current', format: 'pdf') ⇒ Hash
Get Grand Canyon VFR Chart download link.
-
#grand_canyon_info(edition: 'current', format: 'pdf') ⇒ Hash
Get Grand Canyon VFR Chart edition information.
-
#ifr_enroute_chart(edition: 'current', geoname: nil, altitude:, format: 'pdf') ⇒ Hash
Get IFR Enroute Chart download link.
-
#ifr_enroute_info(edition: 'current', geoname: nil, altitude:, format: 'pdf') ⇒ Hash
Get IFR Enroute Chart edition information.
-
#initialize(client_id = nil, client_secret = nil) ⇒ Service
constructor
Initialize the service with FAA API credentials.
-
#sectional_chart(edition: 'current', geoname: nil, format: 'pdf') ⇒ Hash
Get Sectional Chart download link.
-
#sectional_info(edition: 'current', geoname: nil, format: 'pdf') ⇒ Hash
Get Sectional Chart edition information.
Constructor Details
#initialize(client_id = nil, client_secret = nil) ⇒ Service
Initialize the service with FAA API credentials
21 22 23 24 25 26 27 |
# File 'lib/faa_apra/service.rb', line 21 def initialize(client_id = nil, client_secret = nil) @client_id = client_id || ENV['FAA_APRA_CLIENT_ID'] @client_secret = client_secret || ENV['FAA_APRA_CLIENT_SECRET'] raise ArgumentError, "FAA APRA client_id is required" unless @client_id raise ArgumentError, "FAA APRA client_secret is required" unless @client_secret end |
Instance Attribute Details
#client_id ⇒ Object (readonly)
Returns the value of attribute client_id.
16 17 18 |
# File 'lib/faa_apra/service.rb', line 16 def client_id @client_id end |
#client_secret ⇒ Object (readonly)
Returns the value of attribute client_secret.
16 17 18 |
# File 'lib/faa_apra/service.rb', line 16 def client_secret @client_secret end |
Instance Method Details
#cifp_chart(edition: 'current') ⇒ Hash
Get CIFP chart download link
36 37 38 39 |
# File 'lib/faa_apra/service.rb', line 36 def cifp_chart(edition: 'current') validate_edition(edition) get("/cifp/chart", { edition: edition }) end |
#cifp_info(edition: 'current') ⇒ Hash
Get CIFP edition date and edition number
44 45 46 47 |
# File 'lib/faa_apra/service.rb', line 44 def cifp_info(edition: 'current') validate_edition(edition) get("/cifp/info", { edition: edition }) end |
#ddof_chart ⇒ Hash
Get Daily Digital Obstacle File download link
55 56 57 |
# File 'lib/faa_apra/service.rb', line 55 def ddof_chart get("/ddof/chart") end |
#ddof_info ⇒ Hash
Get Daily Digital Obstacle File edition information
61 62 63 |
# File 'lib/faa_apra/service.rb', line 61 def ddof_info get("/ddof/info") end |
#dec_chart(edition: 'current') ⇒ Hash
Get Digital Enroute Chart download link
72 73 74 75 |
# File 'lib/faa_apra/service.rb', line 72 def dec_chart(edition: 'current') validate_edition(edition) get("/dec/chart", { edition: edition }) end |
#dec_info(edition: 'current') ⇒ Hash
Get DEC edition date and edition number
80 81 82 83 |
# File 'lib/faa_apra/service.rb', line 80 def dec_info(edition: 'current') validate_edition(edition) get("/dec/info", { edition: edition }) end |
#dtpp_chart(edition: 'current', area: 'US', format: 'all') ⇒ Hash
Get Terminal Procedure Publication chart download information
94 95 96 97 98 99 100 101 102 103 |
# File 'lib/faa_apra/service.rb', line 94 def dtpp_chart(edition: 'current', area: 'US', format: 'all') validate_edition(edition) validate_format(format, %w[all changes xml]) get("/dtpp/chart", { edition: edition, area: area, format: format }) end |
#dtpp_info(edition: 'current', area: 'US') ⇒ Hash
Get Terminal Procedure Publication chart edition information
109 110 111 112 113 114 115 116 |
# File 'lib/faa_apra/service.rb', line 109 def dtpp_info(edition: 'current', area: 'US') validate_edition(edition) get("/dtpp/info", { edition: edition, area: area }) end |
#grand_canyon_chart(edition: 'current', format: 'pdf') ⇒ Hash
Get Grand Canyon VFR Chart download link
160 161 162 163 164 165 |
# File 'lib/faa_apra/service.rb', line 160 def grand_canyon_chart(edition: 'current', format: 'pdf') validate_edition(edition) validate_format(format, %w[tiff pdf]) get("/grandcanyon/chart", { edition: edition, format: format }) end |
#grand_canyon_info(edition: 'current', format: 'pdf') ⇒ Hash
Get Grand Canyon VFR Chart edition information
171 172 173 174 175 176 |
# File 'lib/faa_apra/service.rb', line 171 def grand_canyon_info(edition: 'current', format: 'pdf') validate_edition(edition) validate_format(format, %w[tiff pdf]) get("/grandcanyon/info", { edition: edition, format: format }) end |
#ifr_enroute_chart(edition: 'current', geoname: nil, altitude:, format: 'pdf') ⇒ Hash
Get IFR Enroute Chart download link
188 189 190 191 192 193 194 195 196 197 198 199 200 201 |
# File 'lib/faa_apra/service.rb', line 188 def ifr_enroute_chart(edition: 'current', geoname: nil, altitude:, format: 'pdf') validate_edition(edition) validate_altitude(altitude) validate_format(format, %w[tiff pdf]) params = { edition: edition, altitude: altitude.downcase, format: format } params[:geoname] = geoname if geoname get("/ifr/enroute/chart", params) end |
#ifr_enroute_info(edition: 'current', geoname: nil, altitude:, format: 'pdf') ⇒ Hash
Get IFR Enroute Chart edition information
209 210 211 212 213 214 215 216 217 218 219 220 221 222 |
# File 'lib/faa_apra/service.rb', line 209 def ifr_enroute_info(edition: 'current', geoname: nil, altitude:, format: 'pdf') validate_edition(edition) validate_altitude(altitude) validate_format(format, %w[tiff pdf]) params = { edition: edition, altitude: altitude.downcase, format: format } params[:geoname] = geoname if geoname get("/ifr/enroute/info", params) end |
#sectional_chart(edition: 'current', geoname: nil, format: 'pdf') ⇒ Hash
Get Sectional Chart download link
127 128 129 130 131 132 133 134 135 |
# File 'lib/faa_apra/service.rb', line 127 def sectional_chart(edition: 'current', geoname: nil, format: 'pdf') validate_edition(edition) validate_format(format, %w[tiff pdf]) params = { edition: edition, format: format } params[:geoname] = geoname if geoname get("/sectional/chart", params) end |
#sectional_info(edition: 'current', geoname: nil, format: 'pdf') ⇒ Hash
Get Sectional Chart edition information
142 143 144 145 146 147 148 149 150 |
# File 'lib/faa_apra/service.rb', line 142 def sectional_info(edition: 'current', geoname: nil, format: 'pdf') validate_edition(edition) validate_format(format, %w[tiff pdf]) params = { edition: edition, format: format } params[:geoname] = geoname if geoname get("/sectional/info", params) end |