Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Testing an HTTP client: Part IV
var path = require("path");
/**
* GET /services/rest?api_key=9147f8d3b61c82089641b1268482c2a1&format=json&nojsoncallback=1&method=flickr.photos.search&text=coffee
*
* host: api.flickr.com
* accept-encoding: gzip, deflate
* user-agent: node-superagent/1.8.3
* connection: close
*/
module.exports = function (req, res) {
res.statusCode = 200;
res.setHeader("date", "Mon, 25 Apr 2016 19:08:37 GMT");
res.setHeader("content-type", "application/json");
res.setHeader("content-length", "5853");
res.setHeader("cache-control", "private");
res.setHeader("x-served-by", "www257.flickr.gq1.yahoo.com");
res.setHeader("vary", "Accept-Encoding");
res.setHeader("content-encoding", "gzip");
res.setHeader("age", "0");
res.setHeader("server", "ATS");
res.setHeader("connection", "close");
res.setHeader("x-yakbak-tape", path.basename(__filename, ".js"));
res.write(new Buffer("H4sIAAAAAAAAA+1cW3PbRpb+K23xIbMpmen7xQ8zseRrNpZdljPZ1GrH1Wg0REQgwMHFWlYy/31PA5QEgFBCL6LJi10JBQJg4+D0uXzn0v3L0WZV1EV19OSXo4299EdPyHF7AGcYwwK++HJ3AePjo7qobXb05AiucSaPjrufHz3571+O0hjOUym4EYIyTeFicZ37Es4KpTEllHx7hjGcrrwrfQ3nLUmcjrGJdXu2/NTeTRQOP05suT56QuGZaZ3B84+eZrEvrc3RaZEk3qPH6J0tr9BzW9Vwe1ptmihLXfsGaZWUqc+BItx+ses027ZfKpuEd/nX8S3BmCnMMea8RzDnAlMtJRDM+gRrTTkmkVZ4QLBUfIrg09Ku12l+iZKiREma26z6G3pW5F/V6Looy+0xuvZfffLosqjRtmhKFFl3tUQfyi0K37bNer1FblW4IrO1R66Ax/kY+WpT+qoqUORtXj1CP3q0sjBMvfJrlObIok8W3r7ewniXx/A1Dmy6G6c7m8dw5XqVhoH7l5bAULcKRzBqFQZFzgK/09wj/88m/WQzn9eoLhBDrtlUqEiAsnZCgKRN5m3l0brJ3epzJwX3JiVIEcZU9qWISJgroylMiuxPCrdC85hxGKM/KZyrqUn5HsQFOLINnDpdpc5eFo8eoZcNcBTYUXxVtbPwN3TRxJrF8OlxfHvsjECL3a/QAvji28/ERx7Ys0iKIt4UZY4W/1mUMDlo0c3hoi7TDVp8ss7WaQGnYQZBLiK45woG6Li3SEq72cDfVZH7bbgWw411aa8jXwLjKrSI4EdVEZ688h7e31754S0wq8AUu0aLiyayzFw0jloOhGOHLxobJxrOK6vb6yaOfuu68z5cEcy1d3vRjka6azR24Y5W7mdonjSSCtnXPMKw5FhjNp5lY4WinFBrB7MsyKTqvTNEY8wI+gv5jzkkghwySSjty6GhxChK1diaSSkJJ0nCxNA46Ek5XJzYsj5P15sqCMSHld8dV3cC4eCOIlxdNWuwILvz1aoAWXoHcuR9ef7PxpZw67m3dRh3hsrBbGgm1XA2OGUELJ6AdxWDd00EWG7FrB4ZQjz1rufpBizSRQMDJWBV6jocMvIEYS0wYpgiwRCjaFXXmycX31x8c9XkPvEuXboCZPkKbseJC6fgiwXl7X6foEVc5HFTri2omK2z7jRaZGAp", "base64"));
res.write(new Buffer("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", "base64"));
res.end();
return __filename;
};
var request = require('superagent');
/**
* @constructor
*/
module.exports = Client;
function Client(api_key, host) {
this.params = {};
this.params.api_key = api_key;
this.params.format = 'json';
this.params.nojsoncallback = 1;
this.host = host || 'https://api.flickr.com';
}
Client.prototype = Object.create(null);
Client.prototype.search = function (text, done) {
request('GET', this.host + '/services/rest')
.query('method=flickr.photos.search')
.query('text=' + text)
.query(this.params)
.end(done);
};
var Client = require('./client');
var assert = require('assert');
var yakbak = require('yakbak');
var http = require('http');
var proxy = http.createServer(yakbak('https://api.flickr.com', {
dirname: __dirname
}));
describe('Client', function () {
before(function (done) {
proxy.listen(4567, done);
});
it('calls flickr.photos.search', function (done) {
var subject = new Client(process.env.API_KEY, 'http://localhost:4567');
subject.search('coffee', function (err, res) {
assert.ifError(err);
assert.equal(res.statusCode, 200);
assert.equal(res.body.stat, 'ok');
done();
});
});
});
@Ppmahadevan
Copy link

Welcom

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment