UdeS-STI / udes-node-orchestrator

Orchestrator server. Handles routes and HTTP traffic.
https://udes-sti.github.io/udes-node-orchestrator/
MIT License
0 stars 0 forks source link
orchestrator udes

UdeS Node Orchestrator

Greenkeeper badge CircleCI npm Node

Introduction

This node server acts as an API to simplify calls made to a server that has a complicated infrastructure.

Prerequisites

Getting started

Setup development machine

  1. git clone https://github.com/UdeS-STI/udes-node-orchestrator.git
  2. cd udes-node-orchestrator
  3. npm install

Usage

Scripts

API

import Orchestrator, { ResponseHelper } from 'udes-node-orchestrator'
import config from './config'

const getPostInfo = async (req, res) => {
  const responseHelper = new ResponseHelper(req, res, config)
  const { post } = responseHelper.getQueryParameters()
  const options = {
    method: 'GET',
    url: `${config.apiUrl}/posts/${post}`,
  }

  try {
    const data = await responseHelper.fetch(options)
    // Send response data back to user.
    responseHelper.handleResponse({ data })
  } catch (err) {
    // Send error back to user.
    responseHelper.handleError(err)
  }
}

// Instantiate an orchestrator with your server configuration.
const orchestrator = new Orchestrator(config)

// Set routes with an array of objects containing route info.
orchestrator.setRoutes([
  { method: 'GET', url: '/post*', fn: getPostInfo },
])

// Your server is now up and running, listening on set routes.

Logging

The logging system uses Pino. Log levels used are:

Documentation

JSDocs documentation

Example

A minimalist usage example is available in /boilerplate

Release

These steps consider that version bump has already been done.

git tag vX.X.X
git push origin --tags
npm run build
# Change `main` field in `package.json` from `src/index.js` to `dist/index.js`
npm publish
# Revert change to `main` field in `package.json`

Contributing

You must use the following guides:

This project contains a linting config, you should setup eslint into your editors with .eslintrc.js.