@meisens1/lotr-sdk
Version:
Lord of the Rings SDK for the one API v2
93 lines (89 loc) • 2.91 kB
JavaScript
const axios = require('axios');
const Quote = require('../models/quote');
const { baseUrl, accessToken } = require('../config');
//getQuotes returns a list of movies which are paginated by the default values page 1, limit 100
async function getQuotes(aToken = accessToken, page = 1, limit = 100) {
try {
const response = await axios.get(`${baseUrl}/quote`, {
headers: {
Authorization: `Bearer ${aToken}`,
},
params: {
page,
limit,
},
});
const { docs, total, limit: responseLimit, offset, page: currentPage, pages } = response.data;
const quotes = docs.map(quote => new Quote(
quote._id,
quote.dialog,
quote.movie
));
return {
quotes,
pagination: {
total,
limit: responseLimit,
offset,
page: currentPage,
pages,
},
};
} catch (error) {
console.error('Error retrieving quotes:', error);
throw error;
}
}
//getQuoteByMovieId returns a list of quotes by movieId
async function getQuoteByMovieId(aToken = accessToken, movieId, page = 1, limit = 2) {
try {
const response = await axios.get(`${baseUrl}/movie/${movieId}/quote`, {
headers: {
Authorization: `Bearer ${aToken}`,
},
params: {
page,
limit,
},
});
const { docs, total, limit: responseLimit, offset, page: currentPage, pages } = response.data;
const quotes = docs.map(quote => new Quote(
quote._id,
quote.dialog,
quote.movie
));
return {
quotes,
pagination: {
total,
limit: responseLimit,
offset,
page: currentPage,
pages,
},
};
} catch (error) {
console.error(`Error retrieving quotes for movie with ID ${movieId}:`, error);
throw error;
}
}
//getQuoteById returns a quote with the specificed id
async function getQuoteById(aToken = accessToken, id) {
try {
const response = await axios.get(`${baseUrl}/quote/${id}`, {
headers: {
Authorization: `Bearer ${aToken}`,
},
});
const quote = response.data;
return response.data.docs.map(quote => new Quote(
quote._id,
quote.dialog,
quote.movie
));
} catch (error) {
console.error(`Error retrieving quote with ID ${id}:`, error);
throw error;
}
}
module.exports = { getQuotes, getQuoteByMovieId, getQuoteById };