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',
|
'Host', 'mysite.com',
|
||||||
'accepT', '*/*' ]
|
'accepT', '*/*' ]
|
||||||
|
|
||||||
|
## http.METHODS
|
||||||
|
|
||||||
|
* {Array}
|
||||||
|
|
||||||
|
A list of the HTTP methods that are supported by the parser.
|
||||||
|
|
||||||
## http.STATUS_CODES
|
## http.STATUS_CODES
|
||||||
|
|
||||||
* {Object}
|
* {Object}
|
||||||
|
@ -33,6 +33,7 @@ exports.debug = debug;
|
|||||||
exports.CRLF = '\r\n';
|
exports.CRLF = '\r\n';
|
||||||
exports.chunkExpression = /chunk/i;
|
exports.chunkExpression = /chunk/i;
|
||||||
exports.continueExpression = /100-continue/i;
|
exports.continueExpression = /100-continue/i;
|
||||||
|
exports.methods = HTTPParser.methods;
|
||||||
|
|
||||||
var kOnHeaders = HTTPParser.kOnHeaders | 0;
|
var kOnHeaders = HTTPParser.kOnHeaders | 0;
|
||||||
var kOnHeadersComplete = HTTPParser.kOnHeadersComplete | 0;
|
var kOnHeadersComplete = HTTPParser.kOnHeadersComplete | 0;
|
||||||
|
@ -28,6 +28,7 @@ var IncomingMessage = exports.IncomingMessage = incoming.IncomingMessage;
|
|||||||
|
|
||||||
|
|
||||||
var common = require('_http_common');
|
var common = require('_http_common');
|
||||||
|
exports.METHODS = util._extend([], common.methods).sort();
|
||||||
exports.parsers = common.parsers;
|
exports.parsers = common.parsers;
|
||||||
|
|
||||||
|
|
||||||
|
@ -598,6 +598,13 @@ void InitHttpParser(Handle<Object> target,
|
|||||||
t->Set(FIXED_ONE_BYTE_STRING(node_isolate, "kOnMessageComplete"),
|
t->Set(FIXED_ONE_BYTE_STRING(node_isolate, "kOnMessageComplete"),
|
||||||
Integer::NewFromUnsigned(kOnMessageComplete, node_isolate));
|
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, "execute", Parser::Execute);
|
||||||
NODE_SET_PROTOTYPE_METHOD(t, "finish", Parser::Finish);
|
NODE_SET_PROTOTYPE_METHOD(t, "finish", Parser::Finish);
|
||||||
NODE_SET_PROTOTYPE_METHOD(t, "reinitialize", Parser::Reinitialize);
|
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