🧰 Toolbox of useful parsers to use when working with Contentful API responses.
MIT License
Toolbox of useful parsers to use when working with Contentful API responses.
Via npm
npm install contentful-parsers
Via Yarn
yarn add contentful-parsers
fieldsParser
Probably the most common parser of the lot. This will take a Contentful response,
either an array or a single item, and parse the items to flatten all of the fields
objects and remove the majority of the sys
objects, except for a reference to
the sys.contentType.sys.id
, in case you are doing any based on that for your
rendering.
import contentful from 'contentful';
import { fieldsParser } from 'contentful-parsers';
const client = contentful.createClient({
space: '[SPACE_ID]',
accessToken: '[ACCESS_TOKEN]',
});
const response = await client.getEntry('[ENTRY_ID]');
const data = fieldsParser(response);
graphqlParser
Takes a standard standard REST response from the Contentful API and restructures it to allow it to be queryable via a GraphQL query.
Since this will probably commonly be used with graphql-anywhere
for performing the
queries against the parsed data, a basic resolver is included in the paackage as
well, contentfulResolver
.
import { graphql } from 'graphql-anywhere/lib/async'
import contentful from 'contentful';
import { graphqlParser, contentfulResolver } from 'contentful-parsers';
const entryQuery = gql`
entry {
sys {
id
}
title
copy
}
`
const client = contentful.createClient({
space: '[SPACE_ID]',
accessToken: '[ACCESS_TOKEN]',
});
const response = await client.getEntry('[ENTRY_ID]');
const parsedData = graphqlParser('entry', response);
graphql(
contentfulResolver,
entryQuery,
parsedData,
)
.then(data => {
// data -> Contentful model filtered via GraphQL query
})
.catch(error => console.error(error));
MIT © Ryan Hefner