Interfaces for IO that make use of promises.
Q-IO now subsumes all of Q-HTTP and Q-FS.
File system API for Q promises with method signatures patterned after CommonJS/Fileystem/A but returning promises and promise streams.
Options is an optional object.
flags
:r
,w
,a
,b
, default ofr
, not binarycharset
: default ofutf-8
bufferSize
: in bytesmode
: UNIX permissionsbegin
first byte to read (defaults to zero)end
one past the last byte to read.end - begin == length
Open returns a promise for either a Reader or a Writer depending on the given flags.
Not yet implemented
Not yet implemented
The HTTP module resembles CommonJS/JSGI.
The http
module exports a Server
constructor.
- accepts an application, returns a server.
- calls the application function when requests are received.
- if the application returns a response object, sends that response.
listen(port)
- accepts a port number.
- returns a promise for undefined when the server has begun listening.
stop()
- returns a promise for undefined when the server has stopped.
The http
module exports a request
function that returns a promise
for a response.
- accepts a request or a URL string.
- returns a promise for a response.
The http
module exports a read
function, analogous to
Fs.read(path)
, but returning a promise for the contento of an OK HTTP
response.
- accepts a request or a URL string.
- returns a promise for the response body as a string provided
that the request is successful with a 200 status.
- rejects the promise with the response as the reason for failure if the request fails.
- coerces URLs into request objects.
- completes an incomplete request object based on its
url
.
- coerces strings, arrays, and other objects supporting
forEach
into proper response objects. - if it receives
undefined
, it returnsundefined
. This is used as a singal to the requester that the responder has taken control of the response stream.
A complete request object has the following properties.
url
the full URL of the request as a stringpath
the full path as a stringscriptName
the routed portion of the path, like""
forhttp://example.com/
if no routing has occurred.pathInfo
the part of the path that remains to be routed, like/
forhttp://example.com
orhttp://example.com/
if no routing has occurred.version
the requested HTTP version as an array of strings.method
like"GET"
scheme
like"http:"
host
like"example.com"
port
the port number, like80
remoteHost
remotePort
headers
corresponding values, possibly an array for multiple headers of the same name.body
node
the wrapped Node request object
A complete response object has the following properties.
status
the HTTP status code as a number, like200
.headers
body
an IO readeronclose
is an optional function that this library will call when a response concludes.node
the wrapped Node response object.
Headers are an object mapping lower-case header-names to corresponding values, possibly an array for multiple headers of the same name, for both requests and responses.
body is a representation of a readable stream, either for the content of a request or a response. It is implemented as a Q-IO reader.
forEach(callback)
- accepts a
callback(chunk)
function- accepts a chunk as either a string or a
Buffer
- returns undefined or a promise for undefined when the chunk has been flushed.
- accepts a chunk as either a string or a
- returns undefined or a promise for undefined when the stream is finished writing.
- the
forEach
function for arrays of strings or buffers is sufficient for user-provided bodies
- accepts a
- the
forEach
function is the only necessary function for bodies provided to this library. - in addition to
forEach
, bodies provided by this library support the entire readable stream interface provided byq-io
. read()
- returns a promise for the entire body as a string or a buffer.
An HTTP application is a function that accepts a request and returns a
response. The request
function itself is an application.
Applications can be chained and combined to make advanced servers and
clients.
- accepts a request
- returns a response, a promise for a response, or nothing if no response should be sent.
Reader instances have the following methods:
read()
forEach(callback)
close()
node
the underlying node reader
Additionally, the Reader
constructor has the following methods:
read(tream, charset)
accepts any foreachable and returns either a buffer or a string if given a charset.join(buffers)
consolidates an array of buffers into a single buffer. The buffers array is collapsed in place and the new first and only buffer is returned.
The reader
module exports a function that accepts a Node reader and
returns a Q reader.
Writer instances have the following methods:
write(content)
writes a chunk of content, either from a string or a buffer.flush()
returns a promise to drain the outbound content all the way to its destination.close()
destroy()
node
the underlying node writer
The writer
module exports a function that accepts a Node writer and
returns a Q writer.
Copyright 2009โ2012 Kristopher Michael Kowal MIT License (enclosed)