@plattar/plattar-api
Version:
Module for interfacing with the Plattar API (https://www.plattar.com)
156 lines (120 loc) • 5 kB
Markdown
<h3 align="center">
<img src="graphics/logo.png?raw=true" alt="Plattar Logo" width="600">
</h3>
[](https://packagephobia.com/result?p=@plattar/plattar-api)
[](https://bundlephobia.com/result?p=@plattar/plattar-api)
[](https://bundlephobia.com/result?p=@plattar/plattar-api)
[](https://www.npmjs.com/package/@plattar/plattar-api)
[](https://www.codacy.com/gh/Plattar/plattar-api?utm_source=github.com&utm_medium=referral&utm_content=Plattar/plattar-api&utm_campaign=Badge_Grade)
[](https://www.npmjs.com/package/@plattar/plattar-api)
_plattar-api_ allows interfacing with the [Plattar](https://www.plattar.com) API.
### _Quick Use_
- ES2015 & ES2019 Builds via [jsDelivr](https://www.jsdelivr.com/)
```javascript
// Minified Version ES2015 & ES2019 (Latest)
https://cdn.jsdelivr.net/npm/@plattar/plattar-api/build/es2015/plattar-api.min.js
https://cdn.jsdelivr.net/npm/@plattar/plattar-api/build/es2019/plattar-api.min.js
// Standard Version ES2015 & ES2019 (Latest)
https://cdn.jsdelivr.net/npm/@plattar/plattar-api/build/es2015/plattar-api.js
https://cdn.jsdelivr.net/npm/@plattar/plattar-api/build/es2019/plattar-api.js
```
### _Installation_
- Install using [npm](https://www.npmjs.com/package/@plattar/plattar-api)
```console
npm install @plattar/plattar-api
```
### _Building For Browsers_
- Generate ES6 minified JS
```console
cd plattar-api
npm install
npm run build
```
### _How to Use_
- Fetch a project from the Plattar API.
```javascript
const {
Project
} = require('@plattar/plattar-api');
const project = new Project('your-project-id');
project.get().then((proj) => {
// do something with a project
}).catch((error) => {
console.error(error);
});
```
- Plattar API supports relationship chaining using a single request. Fetch a project from the Plattar API that includes scenes and pages. The _Relationships_ component has a number of useful queries that can be performed.
```javascript
const {
Project,
Scene,
Page
} = require('@plattar/plattar-api');
const project = new Project('your-project-id');
// Tell the Plattar API to fetch your Scenes and Pages
// as part of the Project request
project.include(Scene, Page);
project.get().then((proj) => {
// get a list of all scenes that belong to your project
const scenes = proj.relationships.filter(Scene);
// get a list of all pages that belong to your project
const pages = proj.relationships.filter(Page);
// get a specific scene that belongs to your project
const myScene = proj.relationships.find(Scene, 'your-scene-id');
// get a specific page that belongs to your project
const myPage = proj.relationships.find(Page, 'your-page-id');
}).catch((error) => {
console.error(error);
});
```
- Plattar API also supports multiple relationship chaining using a single request. In this example we fetch a Project with Scenes and Pages aswell as SceneImage that belongs to a Scene.
```javascript
const {
Project,
Scene,
Page,
SceneImage
} = require('@plattar/plattar-api');
const project = new Project('your-project-id');
// Tell the Plattar API to fetch your Scenes, Pages and
// to include SceneImage as part of Scenes
project.include(Page, Scene.include(SceneImage));
project.get().then((proj) => {
// get a list of all scenes that belong to your project
const scenes = proj.relationships.filter(Scene);
scenes.forEach((scene) => {
// grab the SceneImage that belongs to a Scene
const sceneImages = scene.relationships.filter(SceneImage);
});
}).catch((error) => {
console.error(error);
});
```
- Sometimes, we don't want to include everything as part of a single request. We can chain requests based on logic.
```javascript
const {
Project,
Scene,
SceneImage
} = require('@plattar/plattar-api');
const project = new Project('your-project-id');
// Tell the Plattar API to fetch your scenes.
project.include(Scene);
project.get().then((proj) => {
// get a list of all scenes that belong to your project
const scenes = proj.relationships.filter(Scene);
scenes.forEach((scene) => {
// grab the SceneImage that belongs to a Scene
const sceneImage = scene.relationships.find(SceneImage);
// at this point, since SceneImage data was not fetched, we
// can grab it directly
sceneImage.get().then((sceneImage) => {
// do something with sceneImage
}).catch((error) => {
console.error(error);
});
});
}).catch((error) => {
console.error(error);
});
```