Skip to content

poetapp/frost-client

Repository files navigation

Frost Client

CircleCI Renovate enabled semantic-release Join the chat at https://gitter.im/poetapp/Lobby

Frost Client helps you to easily integrate your applications with Po.et's API.

Index

Getting Started

Install

Install Frost Client from the NPM repository or directly from this GitHub repository:

$ npm install @po.et/frost-client
$ yarn add @po.et/frost-client
$ git clone git@github.com:poetapp/frost-client.git
$ cd frost-client && npm link

Import

import { Frost } from '@po.et/frost-client'
const { Frost } = require('@po.et/frost-client')

Initialize

You will need a token to access the Po.et API, which you can obtain from explorer.poetnetwork.net.

import { Frost } from '@po.et/frost-client'

const config = {
  host: 'https://explorer.poetnetwork.net', // required
  timeout: 10 // default 10 seconds
}

const token = YOUR_POET_API_TOKEN

const frost = new Frost(config)

Methods

Create Work

Returns a promise with the API's response. Throws in case of errors.

async function createWork() {
  try {
    const work = {
      name: 'My first work in Frost',
      datePublished: '2017-11-24T00:38:41.595Z', // ISO date
      dateCreated: '2017-11-24T00:38:41.595Z', // ISO date
      author: 'Me',
      tags: 'Frost,the best', // tags separation by commas
      content: 'The best content'
    }

    const { workId } = await frost.createWork(token, work)

  } catch(e) {
    console.log(e)
  }

}

createWork()

Get Work By ID

Returns a promise with the API's response. Throws in case of errors.

async function getWork () {
  try {
    const workId = '123456'
    const work = await frost.getWork(token, workId)
  } catch(e) {
    console.log(e)
  }
}

getWork()

Get All Works

Returns a promise with the API's response. Throws in case of errors.

const getAllWorks = async () => {
  try {
    const works = await frost.getWorks(token)
  } catch(e) {
    console.log(e)
  }
}

getAllWorks()

Post Archive

Upload a file to Frost.

Example using NodeJS:

const readStream = createReadStream('path/to/file.ext')
const [{ archiveUrl }] = await frostClient.postArchive(apiKey, readStream)

Or, if in a browser:

const file = document.querySelector('input[type=file]').files[0]
const [{ archiveUrl }] = await frostClient.postArchive(apiKey, file)

You can then use this archiveUrl as part of the claim that will be submitted to Frost with createWork:

const work = {
  name: 'My first work in Frost',
  datePublished: '2017-11-24T00:38:41.595Z', 
  dateCreated: '2017-11-24T00:38:41.595Z', 
  author: 'Me',
  tags: 'Frost,the best', 
  archiveUrl, // omit the content field
}

const { workId } = await frost.createWork(token, work)