Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

api-binary-proxy

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

api-binary-proxy

Proxy to serve binaries such as images from an API that returns base64 encoded files inside a JSON structure.

  • 0.0.4
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
decreased by-100%
Maintainers
1
Weekly downloads
 
Created
Source

API Binary Proxy

Proxy to serve binaries such as images from an API that returns base64 encoded files inside a JSON structure.

Introduction

Currently a proof of concept with the plan to address performance issues and export a route that can be mounted in a parent application.

API

apiBinaryProxy(config)

Returns a route handler that can be used by Express.

Where config is of the shape {apiUrl, propertyNames, assumeMimeType}:

  • apiUrl: The API url uses sprintf format (see below)
  • propertyNames: An object of the shape {payload, extension, mime, filename}, containing property names that are expected in the upstream API. Each property will default to the property name if not supplied (i.e. payload defaults to "payload"):
    • payload: the base64 encoded file
    • extension: the file extension, this could be with or without an initial .
    • mime: the mime type of the file if available
    • filename: the full filename if available
  • assumeMimeType: the mime type to use if it can't be identified from the upstream API. If not set, will return 404 for unknown mime types.
  • forwardHeaders: Whether to forward incoming headers to the upstream API. Defaults to false.
  • forwardQueryString: Whether to forward query string to the upstream API. Defaults to true.

Usage

With Express

const express = require('express')
const apiBinaryProxy = require('api-binary-proxy');

const app = express();

app.use('/files', apiBinaryProxy({
    apiUrl: 'http://localhost:3001/api/%1$s',
    propertyNames: {payload: 'image'},
    assumeMimeType: 'image/jpeg',
    forwardHeaders: true,
    forwardQueryString: true
}));

In the example above, %1$s will be replaced by any path after '/files' (req.path).

Sprintf

The API url uses sprintf format, for more information see the sprintf-js readme. This is to enable further configuration options to be added in future and to support alternative uses such as:

TODO:

  • More configuration options on API url.
  • Allow extensions such as '.jpg' to be appended to incoming api url.
  • Improve error handling, possibly allowing a callback to be passed in for logging.
  • Unit tests

Developing

npm i
npm run dev

Then browse to:

FAQs

Package last updated on 05 Dec 2019

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