node.js - ".use" method to add logic on each request of SuperAgent -
this issue in superagent repository mentions .use
method add logic on each request. example, adding authorization
header jwt when token available:
superagent.use( bearer ); function bearer ( request ) { var token = sessionstorage.get( 'token' ); if ( token ) request.set( 'authorization', 'bearer ' + token ); }
although last comment informs feature working again, can't make work.
the following test code:
var request = require( 'superagent' ); request.use( bearer ); function bearer ( request ) { // "config" global var token , other stuff resides if ( config.token ) request.set( 'authorization', 'bearer ' + config.token ); }
returns error:
request.use( bearer ); ^ typeerror: undefined not function
the issue linked isn't linked commits, can speculate on whether or not feature implemented , removed, or never implemented in first place.
if read through src, see use
ever defined on prototype of request
constructor, meaning can ever used after you've began constructing request, as shown in readme.
in other words, issue seems talking feature either has been removed, or never existed. should instead use syntax mentioned in readme.
var request = require('superagent'); request .get('/some-url') .use(bearer) // affects **only** request .end(function(err, res){ // }); function bearer ( request ){ // "config" global var token , other stuff resides if ( config.token ) { request.set( 'authorization', 'bearer ' + config.token ); } }
you of course create own wrapper don't have every request.
var superagent = require('superagent'); function request(method, url) { // callback if ('function' == typeof url) { return new superagent.request('get', method).end(url).use(bearer); } // url first if (1 == arguments.length) { return new superagent.request('get', method).use(bearer); } return new superagent.request(method, url).use(bearer); } // re-implement .get , .post helpers if feel they're important.. function bearer ( request ){ // "config" global var token , other stuff resides if ( config.token ) { request.set( 'authorization', 'bearer ' + config.token ); } } request('get', '/some-url') .end(function(err, res){ // });
Comments
Post a Comment