superagent
        
            Ajax with less suck - (and node.js HTTP client to match)
     SuperAgent - Ajax with less suck
           
               
           
            
        
            
             
              
      
                 
                
                
            
            
I am trying to perform an API call with superagent but it encodes my api key which gets rejected.
get(url).query({ key: 'Fmjtd%7Cluu').end(function(err, res) {
The key is being sent as 
Fmjtd%257Cluu
Any ideas how to prevent this using superagent? If I make it part of the 'url' part it's fine but I would like to pass it as query data if possible.
        Source: (StackOverflow)
                  
                 
            
                 
                
                
            
            
I'm building an Express.js API and I'm using mocha and supertest for testing.
However, take a look at this:
  root path
GET / 200 5.789 ms - 19
    ✓ returns 200 status code 
GET / 200 0.787 ms - 19
    ✓ returns json mime type 
GET / 200 0.382 ms - 19
    ✓ contains the package version
I want to get rid of the GET / 200 log so it can look like this:
  root path
    ✓ returns 200 status code
    ✓ returns json mime type
    ✓ contains the package version
Any ideas?
        Source: (StackOverflow)
                  
                 
            
                 
                
                
            
            
I'm using superagent to receive a notifications stream from a server
require('superagent')
  .post('www.streaming.example.com')
  .type('application/json')
  .send({ foo: 'bar' })
  .on('data', function(chunk) {
    console.log('chunk:' + chunk); // nothing shows up
  })
  .on('readable', function() {
    console.log('new data in!');   // nothing shows up
  })
  .pipe(process.stdout);           // data is on the screen
For some reason data and readable events aren't registered, hovewer I can pipe data to the sceeen. How can I process data on the fly?
        Source: (StackOverflow)
                  
                 
            
                 
                
                
            
            
I found the source of my problem for SuperAgent (http://visionmedia.github.com/superagent/) on Firefox. Not sure if SuperAgent is doing it in its AJAX call or if FireFox is triggering it.
Essentially, every time I make an AJAX call an OPTIONS method is being fired on the URL before the actual AJAX call. Quite annoying since the server currently doesn't support OPTIONS. How can I make a call without it going to crap and re-coding the server?
Thanks
        Source: (StackOverflow)
                  
                 
            
                 
                
                
            
            
I'm doing cookie session management with express with something like this:
req.session.authentication = auth;
And I verify the authenticated urls with something like 
if(!req.session.authentication){res.send(401);}
Now I'm building tests for the URLs with mocha, superagent and should, however I can't seem to find a way to get/set the cookie with superagent. I even tried to request the login before the authenticated test but it is not working, 
I have tried adding the request to the login in the before statement for the mocha BDD suite, however it is still telling me that the request is unauthorized, I have tested the authentication doing the requests from the browser, however it is not working from the suite any ideas why?
        Source: (StackOverflow)
                  
                 
            
                 
                
                
            
            
I'm trying to put together a supertest-based integration test suite (run by Mocha) that pings our REST API and validates the response.
However, my test doesn't seem to be running as expected:
var assert = require('assert')
var should = require('should')
var request = require('superagent')
var WEBSERVICE_BASE = 'localhost:8080/our-application/'
describe('Authentication', function() {
  it('prevents user from logging in without credentials', function() {
    console.log('###')
    console.log('Starting with: ' + request)
    console.log('###')
    request.get(WEBSERVICE_BASE + 'auth', function(err, res) {
      console.log('Error: ' + err)
      if (err) {
        throw err
      }
      res.should.have.status(401)
      done()
    })
  })
})
What I see in the console:
Craigs-MBP:mocha-tests Craig$ ./run.sh
  Authentication
###
Starting with: function request(method, url) {
  // callback
  if ('function' == typeof url) {
    return new Request('GET', method).end(url);
  }
  // url first
  if (1 == arguments.length) {
    return new Request('GET', method);
  }
  return new Request(method, url);
}
###
    ✓ prevents user from logging in without credentials
    1 passing (12ms)
It seems request is being redefined as a function, instead of the superagent object?
The test should not pass, and at the very least the console.log printing the err parameter should be seen.
        Source: (StackOverflow)
                  
                 
            
                 
                
                
            
            
Learning TDD and my first simple test for my "Hello World" server response is failing in Mocha.  I'm using Mocha.js, Superagent, & Expect.js.
When I curl -i localhost:8080, I get the correct response and status code.
HTTP/1.1 200 OK
Content-Type: text/plain
Date: Mon, 27 Apr 2015 17:55:36 GMT
Connection: keep-alive
Transfer-Encoding: chunked
Hello World
Test code:
var request = require('superagent');
var expect = require('expect.js');
// Test structure
describe('Suite one', function(){
    it("should get a response that contains World",function(done){
        request.get('localhost:8080').end(function(res){
            // TODO check that response is okay
            expect(res).to.exist;
            expect(res.status).to.equal(200);
            expect(res.body).to.contain('World');
            done();
        });
    });
});
Server code:
var server = require('http').createServer(function(req, res){
    res.writeHead(200, {"Content-Type":"text/plain"});
    res.end('Hello World\n');
});
server.listen(8080, function(){
    console.log("Server listening at port 8080");
});
Mocha output:
  Suite one
    1) should get a response that contains World
  0 passing (110ms)
  1 failing
  1) Suite one should get a response that contains World:
     Uncaught TypeError: Cannot read property 'status' of null
      at test.js:10:23
      at _stream_readable.js:908:16
I've tried googling this issue but no luck finding out what I'm doing wrong.
        Source: (StackOverflow)
                  
                 
            
                 
                
                
            
            
This issue in SuperAgent repository mentions the .use method to add logic on each request. For example, adding an Authorization header for JWT when a token is available:
superagent.use( bearer );
function bearer ( request ) {
    var token = sessionStorage.get( 'token' );
    if ( token ) request.set( 'Authorization', 'Bearer ' + token );
}
Although the last comment informs that this feature is working again, I can't make it to work.
The following test code:
var request = require( 'superagent' );
request.use( bearer );
function bearer ( request )
{
    // "config" is a global var where token and other stuff resides
    if ( config.token ) request.set( 'Authorization', 'Bearer ' + config.token );
}
Returns this error:
request.use( bearer );
        ^
TypeError: undefined is not a function
Edit for the downvoter: Why, Mr Anderson? Why... Why?
        Source: (StackOverflow)
                  
                 
            
                 
                
                
            
            
Clearly SuperAgent supports custom HTTP headers:
request
   .post('/api/pet')
   .send({ name: 'Manny', species: 'cat' })
   .set('X-API-Key', 'foobar')
   .set('Accept', 'application/json')
   .end(function(err, res){
     if (res.ok) {
       alert('yay got ' + JSON.stringify(res.body));
     } else {
       alert('Oh no! error ' + res.text);
     }
   });
My Question:
- If I'm pulling down SuperAgent via npm, how can I inject my own HTTP header across all requests that SuperAgent makes?
- Note: I'm entire willing to create a new npm package that extends SuperAgent if necessary.
Source: (StackOverflow) 
                 
            
                 
                
                
            
            
I'm attempting to use es6 promises with superagent. I'm attempting to call a function that has a superagent request wrapped inside. 
Request.post(buildReq).then(res => {
 if (res.ok) {//process res}
});
Here is the function wrapping superagent
  static post(params) {
    superagent
      .post(params.url)
      .send(params.payload)
      .set('Accept', 'application/json')
      .end((error, res) => {
        return this.Promise.resolve(res);
      })
      .bind(this);
  }
I'm getting an error
enter code here Uncaught TypeError: Cannot read property 'then' of undefined
When I change the return of the function to 
static post(params) {
    return Promise.resolve(superagent
      .post(params.url)
      .auth(params.auth.username, params.auth.password)
      .send(params.payload)
      .set('Accept', 'application/json')
      .end((error, res) => {
        return this.Promise.resolve(res);
      })
    );
  }
It looks like the data is returned in my browser's dev tools, but I cannot get to it within the .then function. How can I get the response from the promise. 
        Source: (StackOverflow)
                  
                 
            
                 
                
                
            
            
I noticed TJ Holowaychuk's superagent library ("Ajax with less suck") try's several ActiveXObject methods for IE when generating a cross browser XHR object:
// ...if normal browser:
  return new XMLHttpRequest;
} else {
  try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}
  try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}
  try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}
  try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}
}
The full code: https://github.com/visionmedia/superagent/blob/master/build/build.js#L359-376
In jQuery, this is not attempted, and I'm curious what's going on here. 
You can search jQuery source for 'ActiveXObject' and see for yourself: http://code.jquery.com/jquery-1.8.2.js
When does new ActiveXObject('Microsoft.XMLHTTP'); throw and waterfall down to the other options?
        Source: (StackOverflow)
                  
                 
            
                 
                
                
            
            
I am having problems trying to do a CORS request from superagent to Amazon S3 for upload a file. First, I am asking to a node.js server for the policy. I return a JSON object like this:
{
    s3PolicyBase64: '',
    s3Signature: '',
    s3Key: '',
    s3ObjectKey: 'ftriana3185/inputData/input_fdc2f7f4b050c5884e5ac60a43bfc0d8ff26d549.csv' }
Then I try from superagent use the policy returned by node to upload a local file. My code looks like this: 
it('GET /inputFiles/s3Credential', function(done) {
    var csvPath = './files/inputFileResource/countrylist.csv';
    var request = {};
    request.ext = 'csv';
    clientAgent.get(localPath + '/inputFiles/s3Credential').send(request).end(function(response) {
        var s3PolicyBase64 = response.body.s3PolicyBase64;
        var s3Signature = response.body.s3Signature;
        var s3Key = response.body.s3Key;
        var s3ObjectKey = response.body.s3ObjectKey;
        var request = clientAgent.post('bucket-name.s3.amazonaws.com')
            .type('form')
            .field('key', s3ObjectKey)
            .field('AWSAccessKeyId', s3Key)
            .field('acl', 'public-read')
            .field('policy', s3PolicyBase64)
            .field('signature', s3Signature)
            .attach('mycsv', csvPath).end(function(response){
                console.log(response);
            });
    });
});
I am sure that the problem is in the form that i am doing the request from superagent because i also have a html form that works fine. So, what is the correct form to use superagent for this purpose?   
        Source: (StackOverflow)
                  
                 
            
                 
                
                
            
            
I'm pretty new to Node.js so this is possibly an basic understanding issue, but I'm getting ECONNREFUSED from a superagent http request when I don't think I should be:
$ curl http://localhost:5000/
{"you": "looking good"}
$ node
> var request = require("superagent");
> var req = request.get("http://localhost:5000/").on('error', function (err) {
    console.log("There's an emergency is going on.", err)
  }).end(function (data) {
    console.log("All is well", data.body)
  });
There's an emergency is going on. { [Error: connect ECONNREFUSED]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect' }
What assumption have I made that is breaking this? I'm actually writing isomorphic JavaScript and the exact same code making the http query on the browser works fine!
        Source: (StackOverflow)
                  
                 
            
                 
                
                
            
            
Is it possible to do a PUT request with multipart form data?
With Superagent I would expect the following to work, but it doesn't.
var request = Request
  .put("http://localhost:8080/upload_file")
  .field("name", file.name)
  .field("size", file.size)
  .attach("file", file.file, file.file.name)
  .accept("application/json")
If I do a post, it works. The difference is the Content-Type. With the successful post request the Content-Type is multipart/form-data; boundary=------WebKitFormBoundaryXg34NkBFcYWq60mH.
If I were to set this manually how would I know what the boundary should be? It seems to be automatically generated by Superagent.
        Source: (StackOverflow)
                  
                 
            
                 
                
                
            
            
I am trying to make a request against a php server that is constructing the url like this:
website.com/?q=help&q=moreHelp&q=evenMoreHelp
How do I use superagent to pass the same query with multiple values?
I've tried this:
req.get('website.com').query({q:'help',q:'moreHelp',q:'evenMoreHelp'}).end(...)
But I'm not sure it is actually sending all three 'q' values.  What am I supposed to do to make sure they all get sent?
        Source: (StackOverflow)