/* * Copyright (C)2014-2020 Haxe Foundation * * 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. */ package js.node.http; import haxe.DynamicAccess; import js.node.events.EventEmitter.Event; import js.node.net.Socket; import js.node.stream.Readable; #if haxe4 import js.lib.Error; #else import js.Error; #end /** Enumeration of events emitted by the `IncomingMessage` objects in addition to its parent class events. **/ @:enum abstract IncomingMessageeEvent(Event) to Event { /** Emitted when the request has been aborted. **/ var Aborted:IncomingMessageeEventVoid> = "aborted"; /** Indicates that the underlying connection was closed. **/ var Close:IncomingMessageeEventVoid> = "close"; } /** An `IncomingMessage` object is created by `http.Server` or `http.ClientRequest` and passed as the first argument to the `'request'` and `'response'` event respectively. It may be used to access response status, headers and data. It implements the `Readable Stream` interface, as well as the following additional events, methods, and properties. **/ @:jsRequire("http", "IncomingMessage") extern class IncomingMessage extends Readable { /** The `aborted` property will be `true` if the request has been aborted. **/ var aborted(default, null):Bool; /** The `complete` property will be `true` if a complete HTTP message has been received and successfully parsed. **/ var complete(default, null):Bool; /** Calls `destroy()` on the socket that received the `IncomingMessage`. If `error` is provided, an `'error'` event is emitted and `error` is passed as an argument to any listeners on the event. **/ override function destroy(?error:Error):IncomingMessage; /** The request/response headers object. Key-value pairs of header names and values. Header names are lower-cased. Duplicates in raw headers are handled in the following ways, depending on the header name: - Duplicates of `age`, `authorization`, `content-length`, `content-type`, `etag`, `expires`, `from`, `host`, `if-modified-since`, `if-unmodified-since`, `last-modified`, `location`, `max-forwards`, `proxy-authorization`, `referer`, `retry-after`, or `user-agent` are discarded. - `set-cookie` is always an array. Duplicates are added to the array. - For duplicate `cookie` headers, the values are joined together with '; '. - For all other headers, the values are joined together with ', '. **/ var headers(default, null):DynamicAccess>>; /** In case of server request, the HTTP version sent by the client. In the case of client response, the HTTP version of the connected-to server. Probably either `'1.1'` or `'1.0'`. **/ var httpVersion(default, null):String; /** HTTP Version first integer **/ var httpVersionMajor(default, null):Int; /** HTTP Version second integer **/ var httpVersionMinor(default, null):Int; /** *Only valid for request obtained from* `Server`. The request method as a string. Read only. Example: `'GET'`, `'DELETE'`. **/ var method(default, null):Method; /** The raw request/response headers list exactly as they were received. The keys and values are in the same list. It is not a list of tuples. So, the even-numbered offsets are key values, and the odd-numbered offsets are the associated values. Header names are not lowercased, and duplicates are not merged. **/ var rawHeaders(default, null):Array; /** The raw request/response trailer keys and values exactly as they were received. Only populated at the `'end'` event. **/ var rawTrailers(default, null):Array; /** Calls `connection.setTimeout(msecs, callback)`. **/ function setTimeout(msecs:Int, ?callback:Void->Void):Void; /** The `Socket` object associated with the connection. With HTTPS support, use `request.socket.getPeerCertificate()` to obtain the client's authentication details. **/ var socket(default, null):Socket; /** Alias for `socket`. **/ var connection(default, null):Socket; /** *Only valid for response obtained from* `ClientRequest`. The 3-digit HTTP response status code. E.G. `404`. **/ var statusCode(default, null):Int; /** *Only valid for response obtained from* `ClientRequest`. The HTTP response status message (reason phrase). E.G. `OK` or `Internal Server Error`. **/ var statusMessage(default, null):String; /** The request/response trailers object. Only populated after the `'end'` event. **/ var trailers(default, null):DynamicAccess; /** *Only valid for request obtained from* `Server`. Request URL string. This contains only the URL that is present in the actual HTTP request. **/ var url(default, null):String; }