The Lord of the Rings SDK
An isomorphic JavaScript client for the Movies endpoint of The One API
Usage
- Install the SDK
yarn add @davemurphysf/liblab
or
npm install @davemurphysf/liblab
- Create a client instance
import { createClient } from '@davemurphysf/liblab';
const theOneClient = createClient('my-api-key');
- Call an endpoint
const movies = await theOneClient.listMovies();
Setup Options
An optional second parameter can be passed to createClient
in the form of an object with the following keys (values):
-
shouldThrowOnError
(boolean): Whether the client should throw an exception when an error is returned from the API or whether it should setok
to false and populate themetadata.error
field instead -
fetch
(Fetch): The SDK uses thecross-fetch
library to make HTTP requests, but an alternativefetch
implementation can be provided as an option (perhaps for Cloudflare Workers).
import { createClient } from '@davemurphysf/liblab';
const theOneClient = createClient('my-api-key', {
shouldThrowOnError: false,
fetch: fetch, // Using the Fetch API available already in the environment instead of the cross-fetch library
});
Client APIs
async listMovies(limit: number = 100, page?: number, offset?: number) : Promise<ApiResponse>
listMovies
Params:
- limit (optional): Maximum number of results to return
- page (optional): Which page to start returning items
- offset (optional): The number of results to skip before returning
async getMovie(movieId: string) : Promise<ApiResponse>
getMovie
Params:
- movieId: the id of the specific movie to fetch
async getMovieQuotes(movieId: string, limit: number = 100, page?: number, offset?: number) : Promise<ApiResponse>
getMovieQuotes
Params:
- movieId: the id of the specific movie to fetch
- limit (optional): Maximum number of results to return
- page (optional): Which page to start returning items
- offset (optional): The number of results to skip before returning
Types
type Movie = {
_id: string;
name: string;
runtimeInMinutes: number;
budgetInMillions: number;
boxOfficeRevenueInMillions: number;
academyAwardNominations: number;
academyAwardWins: number;
rottenTomatoesScore: number;
};
type Quote = {
_id: string;
dialog: string;
movie: string;
character: string;
id: string;
};
type SuccessMetadata = {
total: number;
limit: number;
offset: number;
page: number;
pages: number;
};
type ErrorMetadata = {
error: string;
};
type SucccessResponse = {
ok: true;
docs: Array<Movie | Quote>;
metadata: SuccessMetadata;
};
type ErrorResponse = {
ok: false;
docs: [];
metadata: ErrorMetadata;
};
type ApiResponse = SucccessResponse | ErrorResponse;
Examples
The SDK includes two sample implementations to aid in starting development (both are written in TypeScript):