Git Product home page Git Product logo

api-client's Introduction

FlyByWire Simulations FlyByWire Simulations

FlyByWire Simulations API Client

The official JavaScript client for the FBW API. The library supports both JavaScript and TypeScript.

Installation

Install the client library using npm:

$ npm install --save @flybywiresim/api-client

Usage

Initializing the client

import { NXApi } from '@flybywiresim/api-client';

NXApi.url = new URL('http://localhost:3000');

By default, the URL is set to https://api.flybywiresim.com. If this is the desired URL this step can be omitted.

METAR

import { Metar } from '@flybywiresim/api-client';

Metar.get(icao, source)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • icao is a string of the the airport ICAO code to get the METAR for.
  • source is the selected datasource for the METAR and is optional. Valid sources are:
    • vatsim
    • ms
    • ivao
    • pilotedge
    • aviationweather

TAF

import { Taf } from '@flybywiresim/api-client';

Taf.get(icao, source)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • icao is a string of the the airport ICAO code to get the TAF for.
  • source is the selected datasource for the TAF and is optional. Valid sources are:
    • aviationweather
    • faa

ATIS

import { Atis } from '@flybywiresim/api-client';

Atis.get(icao, source)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • icao is a string of the the airport ICAO code to get the ATIS for.
  • source is the selected datasource for the ATIS and is optional. Valid sources are:
    • faa
    • vatsim
    • ivao
    • pilotedge

Airport

import { Airport } from '@flybywiresim/api-client';

Airport.get(icao)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • icao is a string of the the airport ICAO code to search for.

ATC

import { Atis } from '@flybywiresim/api-client';

ATC.get(source)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • source is the selected datasource for the ATC. Valid sources are:
    • vatsim
    • ivao

TELEX connection handling

Connect to TELEX system

import { Telex } from '@flybywiresim/api-client';

Telex.connect(status)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • status is of type AircraftStatus and contains information about the current flight.

The backend might block certain flight numbers from being used for various reasons.

Update the TELEX status

import { Telex } from '@flybywiresim/api-client';

Telex.update(status)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • status is of type AircraftStatus and contains information about the current flight.

The status has to updated every 6 minutes for the connection to stay alive. It is recommended to update the status every 15 seconds for a usable live map. The status can only be updated once a connection has been established.

Disconnect from TELEX system

import { Telex } from '@flybywiresim/api-client';

Telex.disconnect()
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});

The connection can only be disconnected once it has been established. This releases the flight number for reuse and removes the flight from the live map.

TELEX message handling

Sending a message

import { Telex } from '@flybywiresim/api-client';

Telex.sendMessage(recipient, message)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • recipient is a string containing the flight number of the recipient flight.
  • message is a string containing the message to send.

Messages will be filtered for profanity in the backend.

Receiving messages

import { Telex } from '@flybywiresim/api-client';

Telex.fetchMessages()
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});

Messages can only be received once and will be acknowledged by this transaction.

TELEX Querying

Fetch a single page of active connections

import { Telex } from '@flybywiresim/api-client';

Telex.fetchConnections(skip, take, bounds)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • skip is a number and tells the backend to skip the first n connections.
  • take is a number and tells the backend how many connections to send.
  • bounds is an optional bounding box. Query only connections within this area.

take and skip are used to control the pagination. A maximum of 100 entries can be fetched at a time.

Fetch all active connections

import { Telex } from '@flybywiresim/api-client';

Telex.fetchAllConnections(bounds, callback)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • bounds is an optional bounding box. Query only connections within this area.
  • callback gets called after every fetched page.

Fetch a certain connection

import { Telex } from '@flybywiresim/api-client';

Telex.fetchConnection(id)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • id is the unique identifier of the connection.

Find all active connections matching a flight number

import { Telex } from '@flybywiresim/api-client';

Telex.findConnection(flight)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • flight is the flight number to search for.

Count active connections

import { Telex } from '@flybywiresim/api-client';

Telex.countConnections()
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});

Github

Get the newest commit for a branch

import { GitVersions } from '@flybywiresim/api-client';

GitVersions.getNewestCommit(user, repo, branch)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • user the owner of the repository.
  • repo the repository.
  • branch the requested branch.

Get all releases for a repository

import { GitVersions } from '@flybywiresim/api-client';

GitVersions.getReleases(user, repo)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • user the owner of the repository.
  • repo the repository.

Get open pull requests for a repository

import { GitVersions } from '@flybywiresim/api-client';

GitVersions.getPulls(user, repo)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • user the owner of the repository.
  • repo the repository.

Get the artifact URL for a pull request

import { GitVersions } from '@flybywiresim/api-client';

GitVersions.getArtifact(user, repo, pull)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • user the owner of the repository.
  • repo the repository.
  • pull the number of the pull request.

Charts

Get the charts for an airport

import { Charts } from '@flybywiresim/api-client';

Charts.get(icao, source)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});
  • icao is a string of the the airport ICAO code to search for.

GNSS

Fetch data for all GNSS satellites

import { Atis } from '@flybywiresim/api-client';

GNSS.get()
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});

Hoppie

Send the request

import { Hoppie } from '@flybywiresim/api-client';

const body {
  logon: 'XXXXXXXXX',
  from: 'TEST0',
  to: 'TEST0',
  type: 'poll'
}
Hoppie.post(body)
  .then(data => {
    console.log(data);
  }).catch(err => {
    console.error(err);
});

License

This software is licensed under the MIT license.

api-client's People

Contributors

benjozork avatar foxtrotsierra6829 avatar nistei avatar pepperoni505 avatar saschl avatar svengcz avatar tracernz avatar zerokaa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

api-client's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.