New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

hermes-server

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hermes-server

End point aggregation server. Useful for providing a single url for all of your micro service endpoints.

  • 0.3.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Hermes

End point aggregation server. useful for providing a single url for all of your micro service endpoints.

Usage

npm install --save hermes-server

'use strict';

const Hermes = require('hermes-server');
const routeSupplier = new Hermes.FileSystemRouteSupplier({
  filePath: './node_modules/hermes-server/routes.example.json'
});
const hermes = new Hermes.Server(routeSupplier, 3000);

hermes.on('listening', (port) => {
  console.log(`Hermes started on port ${port}`);
});

hermes.on('proxy', (method, path, target) => {
  console.log(`${method} ${path} => ${target}`);
});

Route Suppliers

In order to know where to proxy traffic, Hermes needs to be provided with a set of routes. This is achieved by instantiating a RouteSupplier.

Default Route Suppliers

Hermes comes with two route suppliers, Hermes.SimpleRouteSupplier and Hermes.FileSystemRouteSupplier

SimpleRouteSupplier

Provides routes based on an object passed on instantiation

const routeSupplier = new Hermes.SimpleRouteSupplier({
  routeData: [{
    'name': 'Test route',
    'methods': ['GET'],
    'pattern': '/test',
    'target': {
      'protocol': 'http',
      'host': 'example.com',
      'pathname': '/'
    }
  }]
});
routeSupplier.getRoutes().then(routes => { console.log(routes) });
FileSystemRouteSupplier

Reads routes from a JSON file, the path of which is passed to the constructor

const routeSupplier = new Hermes.FileSystemRouteSupplier({
  filePath: './node_modules/hermes-server/routes.example.json'
});
routeSupplier.getRoutes().then(routes => { console.log(routes) });

Custom Route Suppliers

To allow custom generation/retrieval of routes, it is possible to create your own RouteSupplier

const Q = require('q');
const Route = require('Hermes').Route;

class MyRouteSupplier extends Hermes.RouteSupplier {
  constructor(options) {
    super(options);
  }

  getRoutes() {
    return Q.promise((resolve) => {
      fetchRoutesFromSomeService().then((routes) => {
          resolve(routes.map(data => new Route(data)));
      });
    });
  }
}

Route Format

Routes should be defined as below

[{
  // A unique identifier for the route
  "id": "Test route",
  // Which methods should be proxied
  "methods": ["GET", "POST", "PUT", "DELETE"],
  // The hermes path that should be requested in order to have it proxied to
  // the target. Supports RegEx's
  // IE
  // http://your-hermes-instance.com/test => http://example.com/
  // http://your-hermes-instance.com/test/thing => http://example.com/thing
  "pattern": "/test(.*)",
  // The target that the request should be proxied to. Accepts all values that
  // url.format accepts https://nodejs.org/api/url.html#url_url_format_urlobj
  "target": {
    "protocol": "http",
    "host": "example.com",
    "pathname": "/$1"
  }
}]

FAQs

Package last updated on 08 Oct 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc