data-of-the-rings
v1.0.0
Published
You know you love these movies, how 'bout you do some cool things with their data?
Readme
Data Of The Rings
Coding Challenge SDK
This SDK is for a coding challenge. It lets you access an API for data on movies from a popular fantasy franchise.
Once you've installed the module...
Get a Token
Do this here.
Instantiate the SDK
const DOTR = require('data-of-the-rings')('<your-access-token>');You can alternatively set your token in your environment as THE_ONE_API_ACCESS_TOKEN:
const DOTR = require('data-of-the-rings')();Make Requests
async function askTheQuestion() {
const movies = await DOTR.movies();
return `Have you seen all these movies:\n${movies.map(m => m.name).join(', ')}?`;
}Currently Available API
// Returns data around LOTR films
movies(filters: <optional, Filter object>)
// Returns a specific films data,
// requires an _id for the film from a call to `movies`
movie(id: <required, _id string>, filters: <optional, Filter object>)
// Return quotes from a specified film,
// As of this writing quotes only exist for the original LOTR Trilogy of films
quotes(id: <required, _id string>, filters: <optional, Filter object>)Filter Results
Results can be filtered in a number of ways. Start by creating a filter object.
const myFilters = DOTR.newFilter();And then add a filter, you can chain as many as you'd like:
myFilters.any("race", "hobbit", "dwarf").exists("spouse");Then pass myFilters as the optional filters parameter in any of the calls above.
Supported Filters
.any(field, ...vals) // Matches when the fields value equals any of the subsequent params
.none(field, ...vals) // Matches when the fields value doesn't equal any subsequent params
.exist(field) // Matches when the field exists on an object
.dne(field) // Matches when the field does not exist
.gt(field, val) // Matches when fields value is strictly greater than val
.gte(field, val) // Matches when fields value is greater or equal to val
.lt(field, val) // Matches when fields value is strictly less than val
.lte(field, val) // Matches when fields value is less than or equal to valPaging
You can also control paging behavior for calls using a filter object
.page(num) // Which page of data do you want to request
.limit(num) // How many documents per page (defaults to 100)
.offset(num) // How many documents should we offset from the beginningThanks!
Have fun! Don't go putting on any rings with fiery script on them.
