guerrillamail-api
Version:
A JavaScript promise-based wrapper for the Guerrilla Mail API
324 lines (209 loc) • 7.57 kB
Markdown
[api docs]: https://docs.google.com/document/d/1Qw5KQP1j57BPTDmms5nspe-QAjNEsNg8cQHpAAycYNM/edit?hl=en
[event emitter]: https://github.com/primus/eventemitter3
# Guerrilla Mail API Wrapper
A Promise-based Javascript wrapper for the [Guerrillamail API](https://www.guerrillamail.com/GuerrillaMailAPI.html).
## Features
- Interval polling with built-in **start**, **stop**, **play**, **pause** methods, using [setinterval-plus](https://www.npmjs.com/package/setinterval-plus)
- Promise-based, using [Axios](https://www.npmjs.com/package/axios)
- Event emitter, using [EventEmitter3][event emitter]
## Installation
```sh
npm install guerrillamail-api
```
## Usage
**Important:** Once you instantiate the class, you must wait for the API to register a random email address. This is still the case, even if you are using a [custom email address](#custom-email-address).
The class will emit the `emailAddress` event when an email address has been successfully registered with the API. Read more about the available [event methods](#event-methods).
```javascript
import GuerrillaMailApi from 'guerrillamail-api';
const GuerrillaApi = new GuerrillaMailApi();
GuerrillaApi.on('emailAddress', result => {
GuerrillaApi.getEmailList().then(result => {
// ...
});
});
```
### Custom email address
It is possible to connect to a specific inbox by setting `emailUser` in the config object when you instantiate the class. See [config](#config) section.
```javascript
const GuerrillaApi = new GuerrillaMailApi({
emailUser: 'sampleusr'
});
```
### Polling
Use [`pollStart()`](#pollstart) to start polling the inbox for new emails.
As with all methods which interact with the API, you must call the `pollStart()` method **after** the API has registered an email address.
```javascript
GuerrillaApi.on('emailAddress', result => {
// Begin polling for new emails after the email address has been registered
GuerrillaApi.pollStart();
});
```
Wait for the poller to emit the `newEmail` event:
```javascript
GuerrillaApi.on('newEmail', result => {
// You got mail!
});
```
#### Tips
- Control the frequency of polling by setting [`pollInterval`](#config-reference-table) when you instantiate the class.
- It is possible to [play](#pollplay), [pause](#pollpause) and [stop](#pollstop) polling for emails. See [polling methods](#polling-methods).
## Config
Pass config options when instantiating the wrapper.
### Config reference table
| Config Property | Type | Default | Description |
| - | - | - | - |
| `emailUser` | Boolean\|String | `false` | Connect to a specific inbox, otherwise the API will assign you a random inbox. |
| `pollInterval` | Number | `20000` | How often (in milliseconds) to poll for new emails. |
### Example
```javascript
const GuerrillaApi = new GuerrillaMailApi({
emailUser: 'sampleusr'
pollInterval: 15000
});
```
## Methods
### Guerrilla API Methods
Methods for the API endpoints from the official [API documentation][api docs].
**Important:** Do not pass an `sid_token` to any methods. Guerrilla Mail API Wrapper will take care of this internally.
#### getEmailAddress([config])
Register a new random email address with the API.
API function: [`get_email_address`][api docs].
```javascript
GuerrillaApi.getEmailAddress().then(result => {
// ...
});
```
#### setEmailUser([config])
Register a custom email user with the API.
API function: [`set_email_user`][api docs].
```javascript
GuerrillaApi.setEmailUser({
email_user: 'sampleusr'
}).then(result => {
// ...
});
```
#### getEmailList([config])
Get a maximum of 20 messages from the specified offset.
API function: [`get_email_list`][api docs].
```javascript
GuerrillaApi.getEmailList({
offset: 0
}).then(result => {
// ...
});
```
#### getOlderList([config])
Get emails that are older (lower ID) than the given email ID (where `seq` is the ID).
API function: [`get_older_list`][api docs].
```javascript
GuerrillaApi.getOlderList({
seq: 815
}).then(result => {
// ...
});
```
#### checkEmail([config])
API function: [`check_email`][api docs].
Check for new email on the server.
```javascript
GuerrillaApi.checkEmail({
seq: 456
}).then(result => {
// ...
});
```
#### fetchEmail(emailId)
API function: [`fetch_email`][api docs].
Get the contents of an email by ID.
```javascript
GuerrillaApi.fetchEmail(789).then(result => {
// ...
});
```
#### forgetMe()
Forget the current registered email address.
API function: [`forget_me`][api docs].
```javascript
GuerrillaApi.forgetMe().then(result => {
// ...
});
```
#### delEmail(emailId1 [, ...[, emailIdN]])
Delete the emails from the server by ID.
API function: [`del_email`][api docs].
```javascript
GuerrillaApi.delEmail(123, 456, 789).then(result => {
// ...
});
```
### Polling Methods
Methods for controlling the polling interval.
#### pollStart()
Start polling for new emails every _x_ milliseconds, as defined by [`pollInterval`](#config-reference-table).
See [event examples](#event-examples) of how to react when new emails are received.
```javascript
GuerrillaApi.pollStart();
```
#### pollStop()
Stop polling for new emails.
```javascript
GuerrillaApi.pollStop();
```
#### pollPlay()
Resume polling for new emails.
```javascript
GuerrillaApi.pollPlay();
```
#### pollPause()
Pause polling for new emails.
```javascript
GuerrillaApi.pollPause();
```
#### pollDestroy()
Destroy the poller.
```javascript
GuerrillaApi.pollDestroy();
```
### Misc Methods
#### destroy()
Destroy the poller and make the API forget the current email address (like you were never here!).
```javascript
GuerrillaApi.destroy();
```
### Event Methods
Guerrilla Mail API Wrapper extends [EventEmitter3][event emitter] which means you have access to an `.on()` method. This is useful for listening for events, such as when a new email is received, or when the email address has been assigned by the API.
See full list of emitted events in the [event reference table](#event-reference-table).
#### on(eventString, data)
```javascript
GuerrillaApi.on('newEmail', newEmails => {
// Do stuff with the new emails
});
```
## Events
Event strings are emitted in certain situations, which can be listened for using the `.on()` method.
**Important:** The key event to listen for is `emailAddress`. This means the API has registered the inbox and is ready.
### Event examples:
```javascript
GuerrillaApi.on('emailAddress', emailAddressDetails => {
GuerrillaApi.pollStart(); // Start polling for new emails
});
GuerrillaApi.on('emailAddressError', error => {
// Email address wasn't assigned
});
GuerrillaApi.on('newEmail', newEmails => {
// You got mail!
});
```
### Event reference table
| Event string | Emission reason |
| - | - |
| `emailAddress` | An email address has been assigned by the API. |
| `emailAddressError` | An email user or address request errors. |
| `newEmail` | New email has been received. |
| `pollRequestStart` | A poll request is attempted. |
| `pollRequestComplete` | A poll request has been completed. |
| `pollRequestError` | A poll request has an error. |
## Todo
- Write tests
- Add option for callbacks instead of promises