The network API gives the ability to influence network requests. It enables preprocessing requests, processing responses or influencing the retry behavior.

Since

7.4

interface NetworkConfig {
    preprocessHttpRequest?: ((type, request) => Promise<HttpRequest>);
    preprocessHttpResponse?: (<T>(type, response) => Promise<HttpResponse<T>>);
    requestApi?: NetworkRequestApi;
    retryHttpRequest?: (<T>(type, response, retry) => Promise<HttpRequest>);
    sendHttpRequest?: (<T>(type, request) => RequestController<T>);
}

Properties

preprocessHttpRequest?: ((type, request) => Promise<HttpRequest>)

Can be used to change request parameters before a request is made.
This will not be called before a retryHttpRequest.

Example:

network: {
preprocessHttpRequest: function(type, request) {
if (type === bitmovin.player.HttpRequestType.DRM_LICENSE_WIDEVINE) {
// withCredentials = true
request.credentials = 'include';
// custom headers
request.headers['customdata'] = 'AUTHENTICATION-XML';
} else if (type === bitmovin.player.HttpRequestType.MEDIA_VIDEO ||
type === bitmovin.player.HttpRequestType.MEDIA_AUDIO) {

// async call of custom API and add token to media URLs
return customApiCall.then(function(data) {
request.url += '?token=' + data.token;
return request;
});
}
return Promise.resolve(request);
}
}

Type declaration

Returns

The request can be canceled with Promise.reject() or data can be retrieved asynchronously before processing the request properties.

preprocessHttpResponse?: (<T>(type, response) => Promise<HttpResponse<T>>)

Can be used to the access or change properties of the response before it gets into the player.

Example:

network: {
preprocessHttpResponse: function(type, response) {
if (type === bitmovin.player.HttpRequestType.DRM_LICENSE_WIDEVINE) {
drmHeaders = response.headers;
}
}
}

Type declaration

Returns

The response that shall go back into the player.

requestApi?: NetworkRequestApi

Specifies which Browser API should be used to perform network requests.

Default is XHR.

Since

8.149.0

retryHttpRequest?: (<T>(type, response, retry) => Promise<HttpRequest>)

Is called when a request is failed. Will override the default retry behavior.

Example:

network: {
retryHttpRequest: function(type, response) {
// delay the retry by 1 second
return new Promise(function(resolve) {
setTimeout(function() {
resolve(response.request);
}, 1000);
});
}
}

Type declaration

Returns

The request that shall be used on the retry.

sendHttpRequest?: (<T>(type, request) => RequestController<T>)

Can be used to provide a custom implementation to download requested files. When null or undefined is returned for a certain request, the default implementation is used.

Example:

network: {
sendHttpRequest: function(type, request) {
return {
getResponse: function() {
// get data from somewhere else
var response = {
request: request,
url: request.url,
headers: {},
status: 200,
statusText: 'OK',
body: 'my message',
}
return Promise.resolve(response);
},
setProgressListener: function() {},
cancel: function() {},
}
}
}

Type declaration

Returns

The custom implementation of the RequestController.

Since

7.7