better-trakt
Version:
A Trakt.tv client with native Typescript support and quality of life features
64 lines • 2.98 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.fetch = void 0;
const axios_1 = require("axios");
const buildUrl_1 = require("./buildUrl");
const error_1 = require("./error");
/**
* Custom fetch func for calling trakt api
* @param client axios instance
* @param url trakt api uri
* @param accessToken access token for oauth related actions
* @returns Specified type or undefined
* @internal
*/
function fetch(client, url, options) {
return __awaiter(this, void 0, void 0, function* () {
try {
const response = yield client.get((0, buildUrl_1.buildUrl)(url, options), {
headers: options !== undefined && options.accessToken !== undefined
? { Authorization: `Bearer ${options.accessToken}` }
: undefined,
// parseJson: (text: string) => Bourne.parse(text),
});
const res = {
data: response.data,
headers: response.headers,
};
if (response.headers['X-Pagination-Page'] !== undefined &&
response.headers['X-Pagination-Limit'] !== undefined &&
response.headers['X-Pagination-Page-Count'] !== undefined &&
response.headers['X-Pagination-Item-Count'] !== undefined) {
res.pagination = {
page: parseInt(response.headers['X-Pagination-Page']),
limit: parseInt(response.headers['X-Pagination-Limit']),
pageCount: parseInt(response.headers['X-Pagination-Page-Count']),
itemCount: parseInt(response.headers['X-Pagination-Item-Count']),
};
}
return res;
}
catch (e) {
if (e instanceof axios_1.AxiosError && e.response !== undefined) {
// throw new TraktHttpError(e.response.status, e.response.data, e.response.headers);
return {
error: new error_1.TraktHttpError(e.response.status, e.response.data, e.response.headers),
headers: e.response.headers,
};
}
// console.error(e);
throw e;
}
});
}
exports.fetch = fetch;
//# sourceMappingURL=fetch.js.map