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

@tonybadguy/call-me-maybe

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tonybadguy/call-me-maybe

A Node.js module for creating REST clients with easy request model templating and straightforward extensibility

  • 2.1.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
822
increased by20.18%
Maintainers
1
Weekly downloads
 
Created
Source

@tonybadguy/call-me-maybe

npm version Build Status codecov

A Node.js module for creating REST clients with easy request model templating and straightforward extensibility

A simple GET request :+1:

const send = require('@tonybadguy/call-me-maybe');

send({
  url: 'https://httpbin.org/get'
}).then(response => {
  console.log(response.statusCode);
  console.log(response.body);
  console.log(response.headers);
  console.log(response.jsonBody.origin);
}).catch(error => {
  console.log(error);
});

POST with body :sparkling_heart:

send({
  url: 'https://httpbin.org/post',
  method: 'POST',
  body: 'my data'
}).then(response => {
  console.log(response.body);
  console.log(response.jsonBody.data); // 'my data'
});

POST with object as json body :sparkles::sparkling_heart::sparkles:

send({
  url: 'https://httpbin.org/post',
  method: 'POST',
  jsonBody: {
    foo: 'bar'
  }
}).then(response => {
  console.log(response.body);
  console.log(response.jsonBody.json.foo); // 'bar'
});

Content-Type header is automatically set to application/json.

POST with object as urlencoded body :sparkles::scream::sparkles:

send({
  url: 'https://httpbin.org/post',
  method: 'POST',
  urlencodedBody: {
    foo: 'bar'
  }
}).then(response => {
  console.log(response.jsonBody.form.foo); // 'bar'
});

Content-Type header is automatically set to application/x-www-form-urlencoded.

Make it fancy with urlParams :sparkles::sparkling_heart::scream::sparkling_heart::sparkles:

send({
  url: 'https://httpbin.org/{foo}',  // 'https://httpbin.org/get'
  urlParams:{
    foo:'get'
  }
}).then(response => {
  console.log(response.body);
});

Or with a query :hand::dollar::dollar::dollar:

send({
  url: 'https://httpbin.org/get',  // 'https://httpbin.org/get?foo=bar%20baz'
  query:{
    foo:'bar baz'
  }
}).then(response => {
  console.log(response.body);
});

Set headers :collision::dizzy_face::collision:

send({
  url: 'https://httpbin.org/get',
  headers:{
    'x-my-header':'oh hai'
  }
}).then(response => {
  console.log(response.body);
});

Set bearer token authorization header :collision::revolving_hearts::dizzy_face::revolving_hearts::collision:

This is a shortcut for setting the Authorization header.

send({
  url: 'https://httpbin.org/get',
  bearerToken: 'mytoken'
}).then(response => {
  console.log(response.body);
});

Authorization header is set to Bearer mytoken.

Handle non-200 status :fire::poop::fire::ok_hand:

send({
  url: 'https://httpbin.org/status/500'
}).then(response => {
  // won't be called
}).catch(error => {
  console.log(error.response.statusCode); // 500
});

All features above are enabled by default

  • They are implemented using pluggable filter modules on request / response
  • You can customize which filters to use via optional params of the send() function
  • You can write your own filters

Advanced: Overriding default filters :rocket:

'use strict';

const send = require('@tonybadguy/call-me-maybe');
const jsonBodyFilter = require('@tonybadguy/call-me-maybe/lib/response-filters/json-body');

const request = {
  url: 'https://httpbin.org/get'
};

const requestFilters = []; // don't use any of the default request filters
const responseFilters = [jsonBodyFilter]; // only use the json body filter

send(request, requestFilters, responseFilters).then(response => {
  console.log(response);
});

Advanced: Example custom request filter :rocket::rocket:

'use strict';

// a filter that always sets the request body to 'hello world!'
module.exports = {
  filter: (request) => {
    request.body = 'hello world!';
  
    return request;
  }
};

Advanced: Custom response filters are exactly the same :rocket::rocket:

'use strict';

// a filter that always sets the response body to 'hello world!'
module.exports = {
  filter: (response) => {
    response.body = 'hello world!';
  
    return request;
  }
};

Keywords

FAQs

Package last updated on 16 Sep 2018

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