https://github.com/carbonalabel/esi-request
Zero-dependency Node.js library for making requests to EVE Online's ESI API.
https://github.com/carbonalabel/esi-request
esi eve eve-online eveonline
Last synced: 4 months ago
JSON representation
Zero-dependency Node.js library for making requests to EVE Online's ESI API.
- Host: GitHub
- URL: https://github.com/carbonalabel/esi-request
- Owner: CarbonAlabel
- License: mit
- Created: 2019-04-21T00:34:45.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2020-07-14T23:07:06.000Z (almost 6 years ago)
- Last Synced: 2024-01-29T22:48:20.362Z (over 2 years ago)
- Topics: esi, eve, eve-online, eveonline
- Language: TypeScript
- Homepage:
- Size: 39.1 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: readme.md
- License: license
Awesome Lists containing this project
README
# esi-request
Zero-dependency Node.js library for making requests to EVE Online's ESI API.
## Features
* Simple promise-based interface.
* Utilizes HTTP/2 and request compression to make the most efficient use of your bandwidth.
* Automatic pagination of requests.
* Simple ETag usage.
## Not Included
* Caching.
## Usage
Node.js 13.2.0 or newer is required. Import the class, and create a new instance of it.
```js
import {ESIRequest} from "@esi/request";
const ESI = new ESIRequest();
```
**The documentation below may be slightly out of date**
Optionally, an options object can be passed to the constructor. Available options are:
* `esi_url`: URL of the ESI the instance should connect to. Defaults to https://esi.evetech.net.
* `http2_options`: An options object to be passed to the Node http2 library. See the [Node.js documentation](https://nodejs.org/api/http2.html#http2_http2_connect_authority_options_listener) for full details on available options. Usage example: [markets.js](examples/markets.js)
* `default_headers`: HTTP headers to be added to all requests. Usage example: [defaults.js](examples/defaults.js)
* `default_query`: Query parameters to be added to all requests. Usage example: [defaults.js](examples/defaults.js)
* `max_time`: Maximum amount of time to spend retrying a single request, in milliseconds. Defaults to 30 seconds.
* `max_retries`: Maximum number of times to retry a single request. Defaults to 3.
* `retry_delay`: A function which returns a number producing iterable, telling the instance how long to wait before request retries. Defaults to fixed delays of 3, 10, and 15 seconds. Usage example: [status.js](examples/status.js)
* `strip_headers`: Array of header names which should be stripped from responses. Defaults to a list of CORS and STS headers which are irrelevant outside of a browser context.
Once the instance is ready, use the `request` method, preferably in an async context, to make requests to ESI.
```js
let status = await ESI.request("/v1/status/").data;
console.log(`There are currently ${status.players} players online.`);
```
In addition to the request path, an options object can be passed. Available options are:
* `method`: HTTP method to use for the request.
* `headers`: HTTP headers to be added to the request.
* `query`: Query parameters to be added to the request.
* `body`: Object to be sent as request body.
* `body_page_size`: Used to split the request body into multiple parts. Usage example: [names.js](examples/names.js)
* `token`: SSO token to be used in the request.
* `previous_response`: A response object object returned by a previous request. Usage example: [etags.js](examples/etags.js)
The promise should resolve to a response object:
* `headers`: Response headers.
* `data`: Parsed response body.
* `body`: Response body, present instead of `data` if the response wasn't a JSON document.
* `responses`: If pagination was performed, this will be an array containing the individual responses.
If the promise is rejected, the error may come with a `responses` property, which will be an array of response objects from requests made before giving up.