/* eslint-disable camelcase */ /* eslint-disable class-methods-use-this */ const { RESTDataSource } = require('apollo-datasource-rest'); class ContentfulAPI extends RESTDataSource { constructor() { super(); this.baseURL = `https://cdn.contentful.com/spaces/${ process.env.CONTENTFUL_SPACE_ID }`; } willSendRequest(request) { // request.params.set( // 'select', // 'sys.id,fields.title,fields.body,fields.createdAt,fields.tags,fields.author,fields.authorRole' // ); request.headers.set( 'Authorization', `Bearer ${process.env.CONTENTFUL_ACCESS_TOKEN}` ); } async entry(id) { const data = await this.get( `/entries/${id}?select=sys.id,fields.title,fields.body,fields.createdAt,fields.tags,fields.author,fields.authorRole` ); const entries = JSON.parse(data); return entries; } async entriesByContentType(content_type = 'fitness', limit = 10, skip = 0) { const data = await this.get( `/entries?content_type=${content_type}&limit=${limit}&skip=${skip}&select=sys.id,fields.title,fields.body,fields.createdAt,fields.tags,fields.author,fields.authorRole,fields.image` ); const entries = JSON.parse(data); return entries; } async entries(limit = 10, skip = 0) { const data = await this.get(`/entries?limit=${limit}&skip=${skip}`); const entries = JSON.parse(data); return entries; } async singleAsset(id) { const data = await this.get(`/assets/${id}`); const entries = JSON.parse(data); return entries; } } module.exports = ContentfulAPI;