nightmare-webrequest-addon
nightmare-webrequest-addon copied to clipboard
:package: Add webRequest APIs to NIghtmare
nightmare-webrequest-addon
The
webRequest
API set allows to intercept and modify contents of a request at various stages of its lifetime. (from https://github.com/electron/electron/blob/master/docs/api/session.md#seswebrequest)
This is the wrapper of Electron API session.webRequest
.
Install
npm install --save nightmare-webrequest-addon
Usage
nightmare.onBeforeRequest([filter, ]listener)
-
filter
Object -
listener
Function
The listener
will be called with listener(details, callback)
when a request
is about to occur.
-
details
Object-
id
Integer -
url
String -
method
String -
resourceType
String -
timestamp
Double -
uploadData
Array (optional)
-
-
callback
Function
The uploadData
is an array of data
objects:
-
data
Object-
bytes
Buffer - Content being sent. -
file
String - Path of file being uploaded.
-
The callback
has to be called with an response
object:
-
response
Object-
cancel
Boolean (optional) -
redirectURL
String (optional) - The original request is prevented from being sent or completed, and is instead redirected to the given URL.
-
Note: listener
is Electron-side context, cannot access any variable/function outside of listener
If you want to use details
Object in the nodeJS-side, use nightmare.on('onBeforeRequest', callback)
The callback
has to be called with an details
object:
-
details
Object-
id
Integer -
url
String -
method
String -
resourceType
String -
timestamp
Double -
uploadData
Array (optional)
-
See the example.
nightmare.onBeforeSendHeaders([filter, ]listener)
-
filter
Object -
listener
Function
The listener
will be called with listener(details, callback)
before sending
an HTTP request, once the request headers are available. This may occur after a
TCP connection is made to the server, but before any http data is sent.
-
details
Object-
id
Integer -
url
String -
method
String -
resourceType
String -
timestamp
Double -
requestHeaders
Object
-
-
callback
Function
The callback
has to be called with an response
object:
-
response
Object-
cancel
Boolean (optional) -
requestHeaders
Object (optional) - When provided, request will be made with these headers.
-
Note: listener
is Electron-side context, cannot access any variable/function outside of listener
If you want to use details
Object in the nodeJS-side, use nightmare.on('onBeforeSendHeaders', callback)
The callback
has to be called with an details
object:
-
details
Object-
id
Integer -
url
String -
method
String -
resourceType
String -
timestamp
Double -
requestHeaders
Object
-
See the example.
nightmare.onSendHeaders([filter, ]listener)
-
filter
Object -
listener
Function
The listener
will be called with listener(details)
just before a request is
going to be sent to the server, modifications of previous onBeforeSendHeaders
response are visible by the time this listener is fired.
-
details
Object-
id
Integer -
url
String -
method
String -
resourceType
String -
timestamp
Double -
requestHeaders
Object
-
Note: listener
is Electron-side context, cannot access any variable/function outside of listener
If you want to use details
Object in the nodeJS-side, use nightmare.on('onBeforeSendHeaders', callback)
The callback
has to be called with an details
object:
-
details
Object-
id
Integer -
url
String -
method
String -
resourceType
String -
timestamp
Double -
requestHeaders
Object
-
See the example.
nightmare.onHeadersReceived([filter,]listener)
-
filter
Object -
listener
Function
The listener
will be called with listener(details, callback)
when HTTP
response headers of a request have been received.
-
details
Object-
id
String -
url
String -
method
String -
resourceType
String -
timestamp
Double -
statusLine
String -
statusCode
Integer -
responseHeaders
Object
-
-
callback
Function
The callback
has to be called with an response
object:
-
response
Object-
cancel
Boolean -
responseHeaders
Object (optional) - When provided, the server is assumed to have responded with these headers. -
statusLine
String (optional) - Should be provided when overridingresponseHeaders
to change header status otherwise original response header's status will be used.
-
Note: listener
is Electron-side context, cannot access any variable/function outside of listener
If you want to use details
Object in the nodeJS-side, use nightmare.on('onHeadersReceived', callback)
The callback
has to be called with an details
object:
-
details
Object-
id
String -
url
String -
method
String -
resourceType
String -
timestamp
Double -
statusLine
String -
statusCode
Integer -
responseHeaders
Object
-
See the example.
nightmare.onResponseStarted([filter, ]listener)
-
filter
Object -
listener
Function
The listener
will be called with listener(details)
when first byte of the
response body is received. For HTTP requests, this means that the status line
and response headers are available.
-
details
Object-
id
Integer -
url
String -
method
String -
resourceType
String -
timestamp
Double -
responseHeaders
Object -
fromCache
Boolean - Indicates whether the response was fetched from disk cache. -
statusCode
Integer -
statusLine
String
-
Note: listener
is Electron-side context, cannot access any variable/function outside of listener
If you want to use details
Object in the nodeJS-side, use nightmare.on('onResponseStarted', callback)
The callback
has to be called with an details
object:
-
details
Object-
id
Integer -
url
String -
method
String -
resourceType
String -
timestamp
Double -
responseHeaders
Object -
fromCache
Boolean - Indicates whether the response was fetched from disk cache. -
statusCode
Integer -
statusLine
String
-
See the example.
nightmare.onBeforeRedirect([filter, ]listener)
-
filter
Object -
listener
Function
The listener
will be called with listener(details)
when a server initiated
redirect is about to occur.
-
details
Object-
id
String -
url
String -
method
String -
resourceType
String -
timestamp
Double -
redirectURL
String -
statusCode
Integer -
ip
String (optional) - The server IP address that the request was actually sent to. -
fromCache
Boolean -
responseHeaders
Object
-
Note: listener
is Electron-side context, cannot access any variable/function outside of listener
If you want to use details
Object in the nodeJS-side, use nightmare.on('onBeforeRedirect', callback)
The callback
has to be called with an details
object:
-
details
Object-
id
String -
url
String -
method
String -
resourceType
String -
timestamp
Double -
redirectURL
String -
statusCode
Integer -
ip
String (optional) - The server IP address that the request was actually sent to. -
fromCache
Boolean -
responseHeaders
Object
-
See the example.
nightmare.onCompleted([filter, ]listener)
-
filter
Object -
listener
Function
The listener
will be called with listener(details)
when a request is
completed.
-
details
Object-
id
Integer -
url
String -
method
String -
resourceType
String -
timestamp
Double -
responseHeaders
Object -
fromCache
Boolean -
statusCode
Integer -
statusLine
String
-
Note: listener
is Electron-side context, cannot access any variable/function outside of listener
If you want to use details
Object in the nodeJS-side, use nightmare.on('onCompleted', callback)
The callback
has to be called with an details
object:
-
details
Object-
id
Integer -
url
String -
method
String -
resourceType
String -
timestamp
Double -
responseHeaders
Object -
fromCache
Boolean -
statusCode
Integer -
statusLine
String
-
See the example.
nightmare.onErrorOccurred([filter, ]listener)
-
filter
Object -
listener
Function
The listener
will be called with listener(details)
when an error occurs.
-
details
Object-
id
Integer -
url
String -
method
String -
resourceType
String -
timestamp
Double -
fromCache
Boolean -
error
String - The error description.
-
Note: listener
is Electron-side context, cannot access any variable/function outside of listener
If you want to use details
Object in the nodeJS-side, use nightmare.on('onErrorOccurred', callback)
The callback
has to be called with an details
object:
-
details
Object-
id
Integer -
url
String -
method
String -
resourceType
String -
timestamp
Double -
fromCache
Boolean -
error
String - The error description.
-
See the example.
Thanks to @rosshinkley
This module is heavily inspired by nightmare-load-filter
License
MIT