agent

client-side request module

Agent

Agent is a client-side request module inspired by SuperAgent.

var agent = require('agent')
var request = agent()

Agent can be used by composing methods:

request.method('GET').url('./file').data({x: y}).send(function(errorresponse) {
  //... 
})

These methods also act as getters when no parameter is supplied.

Agent can also be used by passing arguments:

var request = agent('GET', './file', {x: y}, function(errorresponse) {
 //... 
})
 
// defaults to POST 
var request = agent('./file', {x: y}, function(errorresponse) {
 //... 
})
 
// defaults to POST, no data 
var request = agent('./file', function(errorresponse) {
 //... 
})

You can also mix and match:

var request = agent('./file')
 
request.send(function(errorresponse) {
  request.data({x: y}).send(function(errorresponse) {
 
  })
})
 

Other methods:

request.header(name, value) // set request header 
request.header(name) // get request header 
request.header() // get all request header 
 
request.running() // bool 
request.abort() // duh 
request.user(userName)
request.password("password") // don't use "password" as your password 

Agent encodes data you send and decodes data it receives based on content-type.

By default, it encodes and decodes application/x-www-form-urlencoded and application/json (however an application/x-www-form-urlencoded response is not common).

You can add a new response body decoder by doing:

agent.decoder('application/javascript', function(text) {
  return new Function(text); // hemmm 
});
 
request.send(function(errorresponse) {
  // response.body is a function if the content-type 
  // of the response is `application/javascript` 
})

Or an encoder for data you send:

// This is already in Agent, this is an example 
agent.encoder('application/json', JSON.stringify);
 
request.header('content-type', 'application/json')
// the request will be sent with JSON rather than url encoded. 
request.data({a: 1, b: 2}).send(function(...) {
 
})

The response obejct you get back when requesting contains a few useful properties:

response.text // response text 
response.body // parsed response text based on the content-type header field 
response.status // response status 
response.header // response header, as an object 
 
// and some added sugar, courtesy of SuperAgent 
 
response.info
response.ok
response.clientError
response.serverError
response.error
response.accepted
response.noContent
response.badRequest
response.unauthorized
response.notAcceptable
response.notFound

Simply run

npm test

And fire up a browser on http://localhost:9090