@apolitical/sdk
Version:
Browser library to interact with Apolitical's APIs
103 lines (66 loc) • 2.72 kB
Markdown
# 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.