http: expose supported methods
Expose the list of supported HTTP methods as a property on the 'http' module object. Fixes #6422.
This commit is contained in:
parent
61ccaf9a97
commit
610022851a
@ -43,6 +43,12 @@ list like the following:
|
||||
'Host', 'mysite.com',
|
||||
'accepT', '*/*' ]
|
||||
|
||||
## http.METHODS
|
||||
|
||||
* {Array}
|
||||
|
||||
A list of the HTTP methods that are supported by the parser.
|
||||
|
||||
## http.STATUS_CODES
|
||||
|
||||
* {Object}
|
||||
|
@ -33,6 +33,7 @@ exports.debug = debug;
|
||||
exports.CRLF = '\r\n';
|
||||
exports.chunkExpression = /chunk/i;
|
||||
exports.continueExpression = /100-continue/i;
|
||||
exports.methods = HTTPParser.methods;
|
||||
|
||||
var kOnHeaders = HTTPParser.kOnHeaders | 0;
|
||||
var kOnHeadersComplete = HTTPParser.kOnHeadersComplete | 0;
|
||||
|
@ -28,6 +28,7 @@ var IncomingMessage = exports.IncomingMessage = incoming.IncomingMessage;
|
||||
|
||||
|
||||
var common = require('_http_common');
|
||||
exports.METHODS = util._extend([], common.methods).sort();
|
||||
exports.parsers = common.parsers;
|
||||
|
||||
|
||||
|
@ -598,6 +598,13 @@ void InitHttpParser(Handle<Object> target,
|
||||
t->Set(FIXED_ONE_BYTE_STRING(node_isolate, "kOnMessageComplete"),
|
||||
Integer::NewFromUnsigned(kOnMessageComplete, node_isolate));
|
||||
|
||||
Local<Array> methods = Array::New();
|
||||
#define V(num, name, string) \
|
||||
methods->Set(num, FIXED_ONE_BYTE_STRING(node_isolate, #string));
|
||||
HTTP_METHOD_MAP(V)
|
||||
#undef V
|
||||
t->Set(FIXED_ONE_BYTE_STRING(node_isolate, "methods"), methods);
|
||||
|
||||
NODE_SET_PROTOTYPE_METHOD(t, "execute", Parser::Execute);
|
||||
NODE_SET_PROTOTYPE_METHOD(t, "finish", Parser::Finish);
|
||||
NODE_SET_PROTOTYPE_METHOD(t, "reinitialize", Parser::Reinitialize);
|
||||
|
32
test/simple/test-http-methods.js
Normal file
32
test/simple/test-http-methods.js
Normal file
@ -0,0 +1,32 @@
|
||||
// Copyright Joyent, Inc. and other Node contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the
|
||||
// "Software"), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
// persons to whom the Software is furnished to do so, subject to the
|
||||
// following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included
|
||||
// in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||||
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
var common = require('../common');
|
||||
var assert = require('assert');
|
||||
var http = require('http');
|
||||
var util = require('util');
|
||||
|
||||
assert(Array.isArray(http.METHODS));
|
||||
assert(http.METHODS.length > 0);
|
||||
assert(http.METHODS.indexOf('GET') !== -1);
|
||||
assert(http.METHODS.indexOf('HEAD') !== -1);
|
||||
assert(http.METHODS.indexOf('POST') !== -1);
|
||||
assert.deepEqual(util._extend([], http.METHODS), http.METHODS.sort());
|
Loading…
x
Reference in New Issue
Block a user