SwiftAirmen: FAA Airman Database parser
SwiftAirmen parses the
FAA Airmen Certification Database
into native Swift structs that are tightly defined with no data weirdness. You
must download a copy of the airmen database in CSV format from that website to
use with this library.
Requirements
This library was built for use with Swift 5.5 or newer on any platform or
architecture.
Installation
Use Swift Package Manager to include SwiftAirmen in your project:
let package = Package(
// [...]
dependencies: [
.package(url: "https://github.com/RISCfuture/SwiftAirmen", branch: "master")
],
// [...]
)
Be sure to include SwiftAirmen as a dependency in your .target
entry.
Usage
To parse airmen records, create an instance of Parser
and give it the path to
your downloaded CSV records:
import SwiftAirmen
let parser = SwiftAirmen.Parser(directory: yourDirectoryURL)
try parser.parse(callback: { airmen in
// your code here
}, errorCallback: { error in
// your error handler here
})
parse
executes asynchronously and calls your callback when parsing is
complete. The airmen
block parameter is a dictionary mapping airmen IDs (such
as A4760216
) to Airman
records.
An Airman
record contains information about the airman and their certificates:
let airman = airmen["A4760216"]
print(airman.firstName)
for cert in airman.certificates {
guard case let .pilot(level, ratings, centerlineThrust) = cert else { continue }
if level == .airlineTransport {
// your code continues
}
}
If you wish to track the progress of the parsing operation, parse
returns a Progress
instance that you can use. Any parsing errors are
non-interruptive and will be given to you in the error callback, which is
invoked once per parse error. The final airmen
parameter passed to the
callback includes those records that were parsed without error.
Parsing is an expensive operation. See the Parser
class for methods that will
allow you to parse a subset of the airmen certification data.