UNPKG

@apolitical/sdk

Version:

Browser library to interact with Apolitical's APIs

103 lines (66 loc) 2.72 kB
# Apolitical SDK Browser library to interact with Apolitical's APIs ## Requirements Requires the following to run: - [node.js][node] 16.13.0+ - [yarn][yarn] [node]: https://nodejs.org/en/download/ [yarn]: https://classic.yarnpkg.com/en/docs/install ## Installation Install with `yarn`: ```sh yarn add @apolitical/sdk ``` ## Available Scripts In the project directory, you can run: ### `yarn test` Runs the test (and the interactive mode can be enabled with `--watchAll`). ### `yarn build` Builds the library for production to the `build` folder. It correctly bundles the code on production mode and optimizes the build for the best performance. ## Usage The recommended way to use `@apolitical/sdk` is to load the SDK first: ```js const loadSdk = require('@apolitical/sdk'); const sdk = loadSdk({ origin: window.origin || window.location.origin, errorsContext: { apiKey: decodeBase64(process.env.REACT_APP_GCP_ERRORS_API_KEY), serviceName: 'some-service', }, }); ``` And then, you can use all the functionality provided by the SDK. For example: ```js sdk.people.users.read('me').then((result) => { console.info('User:', result); }); ``` ## Folders & files structure Here's the library's folders structure: ``` /lib /apis /api-1 /resources /handlers /contentful /content-type-1 /helpers /solvers ``` ### APIs folder Under `/lib/apis/` we implement functionality to directly interact with the Apolitical APIs. Each API will have its own folder, for example, `/lib/apis/people/` for People API. Inside the API folder itself, there are two other folders - `/lib/apis/people/resources`: The resources folder holds each RESTful resource on the API and implements CRUD operations - `/lib/apis/people/handlers`: The handlers folder holds functions that require calling the same API more than one time (or in some particular way that cannot be done by using the CRUD operations) ### Contentful folder Under `/lib/contentful/` we implement functionality to interact with Contentful Delivery (and Preview) API. Each content type will have it's own folder, for example, `/lib/contentful/questions/` for the Q&A Question content type. Internally, the functionality will be implemented with the help of the `@apolitical/content` module. ### Helpers folder Under `/lib/helpers/` we implement reusable functionality that helps implementing internal logic within the SDK. ### Solvers folder Under `/lib/solvers/` we implement high level functionality based on the functionality provided by internal APIs and Contentful. For example, the `buildQuestion.js` is a function that reads a question from Contentful, and then, read the author data from the People API.