0.0.3 • Published 3 years ago
@davemurphysf/liblab v0.0.3
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/liblabor
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 setokto false and populate themetadata.errorfield insteadfetch(Fetch): The SDK uses thecross-fetchlibrary to make HTTP requests, but an alternativefetchimplementation 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):