0.0.3 • Published 1 year ago

@davemurphysf/liblab v0.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

The Lord of the Rings SDK

An isomorphic JavaScript client for the Movies endpoint of The One API

Usage

  1. Install the SDK
yarn add @davemurphysf/liblab

or

npm install @davemurphysf/liblab
  1. Create a client instance
import { createClient } from '@davemurphysf/liblab';

const theOneClient = createClient('my-api-key');
  1. 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 set ok to false and populate the metadata.error field instead
  • fetch (Fetch): The SDK uses the cross-fetch library to make HTTP requests, but an alternative fetch 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):