# Trust My Travel: Legacy API SDK

[![Built with
typescript](https://badgen.net/badge/icon/typescript?icon=typescript&label)](https://www.typescriptlang.org/)
[![version](https://badgen.net/npm/v/trust-my-travel-legacy)](https://www.npmjs.com/package/trust-my-travel-legacy)
![dependants](https://badgen.net/npm/dependents/trust-my-travel-legacy)
![license](https://badgen.net/npm/license/trust-my-travel-legacy)

This is an unofficial node SDK for the Trust My Travel legacy API.

All types correspond to the [official docs](http://docs.trustmytravel.com/), with the exception of Booleans which are
given as strings for the most part in the API (i.e. `"true"` rather than `TRUE`), but have been typecast to Booleans
in this module.

Note: The TMT API has timeout issues, where it can take over 10 seconds to respond. We recommend setting a
timeout of +20 seconds for any code that uses this.

## Quickstart

Core functionality works as follows:

```typescript
import TrustMyTravel from 'trust-my-travel-legacy';

async function example() {
  // Initialise the client
  const client = new TrustMyTravel({
    username: 'username',
    password: 'password',
    live: true,
  });

  // Test your connection - useful for unit testing (throws an error if it fails)
  const testResult = await client.testConnection();

  // Take a payment
  const paymentInput: PaymentParameters = {
    firstname: 'Donald',
    //... Full types are fully documented with JS Doc
  };
  const paymentResult = await client.takePayment(paymentInput);

  // Refund
  const refundInput: RefundParameters = {
    booking_id: 123,
    // ...
  };
  const refundResult = await client.refund(refund);
}
```

## Testing

Integration tests are run using pupeteer to get tokens from Spreedly. To run locally you must set the following
environmental variables:

```bash
export TRUST_MY_TRAVEL_STAGING_USERNAME="your_staging_username"
export TRUST_MY_TRAVEL_STAGING_PASSWORD="your_staging_password"
```

## Checklist

| CD Feature | Provided                                                           |
| ---------- | ------------------------------------------------------------------ |
| ✅         | Typescript                                                         |
| ✅         | Linting (AirBnB + Prettier)                                        |
| ✅         | Unit & Integration tests (Jest)                                    |
| ❌         | 100% Coverage check (100% not possible given pupeteer limitations) |
| ✅         | Github Continuous Deployment                                       |

## Built by Skyhook

This module is contributed by the team at [Skyhook](https://www.skyhookadventure.com/).
