@ewmiller/lotr-sdk
TypeScript icon, indicating that this package has built-in type declarations

1.0.5 • Public • Published

LOTR SDK

One SDK to bring them all, and in the darkness network, bind them.

Introduction

This Javascript/Typescript SDK is used to access the entities within the /movie endpoint of The One API. You can get a list of all Lord of the Rings Movies, request one specific movie via its ID, or request quotes from any individual movie (also by its ID).

Installation

Using npm:

npm i @ewmiller/lotr-sdk

Usage

API Key

First you'll need to sign up for an account at The One API to receive an API key.

Next, import the SDK and instantiate it with your API key. In this example, we're using dotenv to set the API key as an environment variable called LOTR_API_TOKEN, but you can use any method you prefer.

Create the Client

Javascript:

const LOTR = require('@ewmiller/lotr-sdk').LOTR;
require('dotenv').config();
const client = new LOTR({
  apiToken: process.env.LOTR_API_TOKEN
});

Typescript:

import { LOTR } from '@ewmiller/lotr-sdk';
import * as dotenv from 'dotenv';
dotenv.config();

const client = new LOTR({
  apiToken: process.env.LOTR_API_TOKEN
});

Using the Client

Now you're ready to call the SDK methods! The following methods are supported: movies.getAll(), movies.getOne(id: string), and quotes.getQuotesFromMovie(id: string). Here are usage examples of each:

const allMovies = await lotr.movies.getAll();

const oneMovie = await lotr.movies.getOne("5cd95395de30eff6ebccde56");

const movieQuotes = await lotr.quotes.getQuotesFromMovie("5cd95395de30eff6ebccde5d");

Response Output

Data will be returned in the following format:

{
  docs: [
    {
      ... // movie or quote details here
    },
    {
      ... // movie or quote details here 
    }
  ]
}

Where docs will be an array of either movie or quote entities. The data types for these are described on the One API's documentation, but are also copied here as typescript interfaces for reference:

export interface Movie {
  _id: string;
  name: string;
  runtimeInMinutes: number;
  budgetInMillions: number;
  boxOfficeRevenueInMillions: number;
  academyAwardNominations: number;
  academyAwardWins: number;
  rottenTomatoesScore: number;
}

export interface Quote {
  _id: string;
  dialog: string;
  movie: string;
  character: string;
  id: string;
}

Config Options

Each SDK method takes an optional configuration object as its second parameter. The config options are used for pagination of the API:

export interface ConfigOptions {
  limit?: number;
  page?: number;
  offset?: number;
}

To use these options, simply pass them in to any SDK method when you call it:

const result = await lotr.quotes.getQuotesFromMovie("5cd95395de30eff6ebccde5d", {
  limit: 100,
  page: 2,
  offset: 3
});

Future Work

This SDK only implements the /movie endpoint of The One API, but could easily be extended to include more API functionality. Check out design.md for more thoughts on the SDK design and potential for expansion. Thanks for reading!

Readme

Keywords

none

Package Sidebar

Install

npm i @ewmiller/lotr-sdk

Weekly Downloads

2

Version

1.0.5

License

ISC

Unpacked Size

16.8 kB

Total Files

19

Last publish

Collaborators

  • ewmiller