Browse Source

implement shortcut methods for all the HTTP verbs

http2
Sindre Sorhus 10 years ago
parent
commit
1483895159
  1. 27
      index.js
  2. 2
      package.json
  3. 10
      readme.md
  4. 18
      test.js

27
index.js

@ -8,7 +8,7 @@ var assign = require('object-assign');
var read = require('read-all-stream'); var read = require('read-all-stream');
var timeout = require('timed-out'); var timeout = require('timed-out');
function got (url, opts, cb) { function got(url, opts, cb) {
if (typeof opts === 'function') { if (typeof opts === 'function') {
// if `cb` has been specified but `opts` has not // if `cb` has been specified but `opts` has not
cb = opts; cb = opts;
@ -123,16 +123,19 @@ function got (url, opts, cb) {
return proxy; return proxy;
} }
got.post = function (url, opts, cb) { [
opts = opts || {}; 'get',
opts.method = 'POST'; 'post',
return got(url, opts, cb); 'put',
}; 'patch',
'head',
got.put = function (url, opts, cb) { 'delete'
opts = opts || {}; ].forEach(function (el) {
opts.method = 'PUT'; got[el] = function (url, opts, cb) {
return got(url, opts, cb); opts = opts || {};
}; opts.method = el.toUpperCase();
return got(url, opts, cb);
};
});
module.exports = got; module.exports = got;

2
package.json

@ -13,7 +13,7 @@
"node": ">=0.10.0" "node": ">=0.10.0"
}, },
"scripts": { "scripts": {
"test": "mocha" "test": "mocha --timeout 50000"
}, },
"files": [ "files": [
"index.js" "index.js"

10
readme.md

@ -89,13 +89,15 @@ The data you requested.
The [response object](http://nodejs.org/api/http.html#http_http_incomingmessage). The [response object](http://nodejs.org/api/http.html#http_http_incomingmessage).
#### got.get(url, [options], [callback])
#### got.post(url, [options], [callback]) #### got.post(url, [options], [callback])
Sets options.method to POST and makes a request.
#### got.put(url, [options], [callback]) #### got.put(url, [options], [callback])
#### got.patch(url, [options], [callback])
#### got.head(url, [options], [callback])
#### got.delete(url, [options], [callback])
Sets `options.method` to the method name and makes a request.
Sets options.method to PUT and makes a request.
## Related ## Related

18
test.js

@ -1,10 +1,8 @@
/* global describe, it, before, after */ /* global describe, it, before, after */
'use strict'; 'use strict';
var assert = require('assert'); var assert = require('assert');
var got = require('./');
var http = require('http'); var http = require('http');
var got = require('./');
it('should do HTTP request', function (done) { it('should do HTTP request', function (done) {
got('http://google.com', function (err, data) { got('http://google.com', function (err, data) {
@ -96,7 +94,7 @@ it('should proxy errors to the stream', function (done) {
}); });
it('should support timeout option', function (done) { it('should support timeout option', function (done) {
var stream = got('http://sindresorhus.com/', { timeout: 1 }); var stream = got('http://sindresorhus.com/', {timeout: 1});
stream.on('error', function (error) { stream.on('error', function (error) {
assert.strictEqual(error.code, 'ETIMEDOUT'); assert.strictEqual(error.code, 'ETIMEDOUT');
@ -104,7 +102,7 @@ it('should support timeout option', function (done) {
}); });
}); });
describe('with POST ', function () { describe('POST', function () {
var server; var server;
before(function (done) { before(function (done) {
@ -119,7 +117,7 @@ describe('with POST ', function () {
}); });
it('should support string as body option', function (done) { it('should support string as body option', function (done) {
got('http://0.0.0.0:8081', { body: 'string' }, function (err, data) { got('http://0.0.0.0:8081', {body: 'string'}, function (err, data) {
assert.ifError(err); assert.ifError(err);
assert.equal(data, 'string'); assert.equal(data, 'string');
done(); done();
@ -127,7 +125,7 @@ describe('with POST ', function () {
}); });
it('should support Buffer as body option', function (done) { it('should support Buffer as body option', function (done) {
got('http://0.0.0.0:8081', { body: new Buffer('string') }, function (err, data) { got('http://0.0.0.0:8081', {body: new Buffer('string')}, function (err, data) {
assert.ifError(err); assert.ifError(err);
assert.equal(data, 'string'); assert.equal(data, 'string');
done(); done();
@ -135,7 +133,7 @@ describe('with POST ', function () {
}); });
it('should take data from options.body in stream mode', function (done) { it('should take data from options.body in stream mode', function (done) {
got.post('http://0.0.0.0:8081', { body: 'Hello' }) got.post('http://0.0.0.0:8081', {body: 'Hello'})
.on('error', done) .on('error', done)
.on('data', function (chunk) { .on('data', function (chunk) {
assert.equal(chunk, 'Hello'); assert.equal(chunk, 'Hello');
@ -145,12 +143,12 @@ describe('with POST ', function () {
it('should throw an error on options.body and write operations', function (done) { it('should throw an error on options.body and write operations', function (done) {
assert.throws(function () { assert.throws(function () {
got.post('http://0.0.0.0:8081', { body: 'Hello' }) got.post('http://0.0.0.0:8081', {body: 'Hello'})
.end('Hello'); .end('Hello');
}, 'got\'s stream is not writable when options.body is used'); }, 'got\'s stream is not writable when options.body is used');
assert.throws(function () { assert.throws(function () {
got.post('http://0.0.0.0:8081', { body: 'Hello' }) got.post('http://0.0.0.0:8081', {body: 'Hello'})
.write('Hello'); .write('Hello');
}, 'got\'s stream is not writable when options.body is used'); }, 'got\'s stream is not writable when options.body is used');

Loading…
Cancel
Save