Non-Polite Mother

    buildapi

    0.5.0 • Public • Published

    buildapi

    install

    npm install buildapi

    How

    buildapi has two exports.

    import buildapi, { Route } from 'buildapi'

    buildapi

    This is API builder function.

    Route class

    Define route extending Route class. In Route class, you can use methods below.

    const fileId = 'dkfjaklfjdkfldjsflksdf'
    const file = evt.file // File event object.
     
    this.put(
      // set endpoint on first argument.
      `file/update/${fileId}`,
      // you can set post data on second argument.
      { key1: 'value1' },
      // you can set multipart/form-data values on third argument.
      { data: file }
    )
    • get
    • post
    • put
    • delete
    • head
    • option
    • download

    Usage

    At first, define your routes extending Route object.

    file_route.js

    import { Route } from 'buildapi'
    const e = encodeURIComponent
     
    export default class File extends Route {
      fetchPermissions(id, cursor) {
        return this.get(`file/permissions/${e(id)}`, { cursor })
      }
      download(fileId) {
        return this.download(`file/data/${e(fileId)}`)
      }
      setAttribute(fileId, key, value) {
        return this.put(`file/attr/${e(fileId)}/${e(key)}/${e(value)}`)
      }
      delete(fileId) {
        return this.delete(`file/${e(fileId)}`)
      }
      fetchData(fileId) {
        return this.get(`file/data/${e(fileId)}`)
      }
      fetch(fileId) {
        return this.get(`file/${e(fileId)}`)
      }
      fetchChunk(fileId, chunkId, from, length) {
        return this.get(`file/data/${e(fileId)}/${e(chunkId)}/${e(from)}/${e(length)}`)
      }
      uploadChunk(fileId, chunkIndex, offset, length, file) {
        return this.put(`file/data/${e(fileId)}/${e(chunkIndex)}/${e(offset)}/${e(length)}`, {}, { data: file })
      }
    }

    And build your api with buildapi.

    api.js

    import buildapi from 'buildapi'
     
    const routes = { File }
     
    module.exports = buildapi({ routes, api: 'https://api.fata.io/v0/' })
     

    And use api.

    import API from './api.js'
     
    const api = new API({
      // you can override api point.
      api: 'staging.server.api'
    })
     
    // access to endpoint.
    api.file.fetchData('testsetsetset') // return Promise object
      .then(res => {
        //...
      })
      .catch(err => {
        console.error(err.status)
      })

    Authorize support

    buildapi supports Oauth token.

    const api = new API() // instanciate your api.
    api.setToken('fsjdkfjdlkfjdsfklsdjflksdf')
     

    This set request header Authorization section internally.

    req.set('Authorization', 'Bearer ' + tokenString)

    Author

    Yusuke Shibata

    Lisense

    MIT

    Keywords

    none

    Install

    npm i buildapi

    DownloadsWeekly Downloads

    15

    Version

    0.5.0

    License

    MIT

    Last publish

    Collaborators

    • yusukeshibata