function method
Future<String>
function({
- bool? blockAds,
- CDPLaunchOptionsOrString? launch,
- String? profile,
- num? timeout,
- String? token,
- String? trackingId,
- JSONSchema? body,
HTTP Method: POST A JSON or JavaScript content-type API for running puppeteer code in the browser's context. Browserless sets up a blank page, injects your puppeteer code, and runs it. You can optionally load external libraries via the "import" module that are meant for browser usage. Values returned from the function are checked and an appropriate content-type and response is sent back to your HTTP call.
Note: This endpoint is also available at: /function for backwards compatibility.
Summary: /chromium/function
Implementation
Future<String> function({
bool? blockAds,
CDPLaunchOptionsOrString? launch,
String? profile,
num? timeout,
String? token,
String? trackingId,
JSONSchema? body,
}) async {
final queryParams = <String, String>{};
if (defaultToken != null) {
queryParams['token'] = defaultToken!;
}
if (blockAds != null) {
queryParams['blockAds'] = blockAds.toString();
}
if (launch != null) {
queryParams['launch'] = launch.toString();
}
if (profile != null) {
queryParams['profile'] = profile.toString();
}
if (timeout != null) {
queryParams['timeout'] = timeout.toString();
}
if (token != null) {
queryParams['token'] = token.toString();
}
if (trackingId != null) {
queryParams['trackingId'] = trackingId.toString();
}
final pathUrl = '/chromium/function';
final uri = Uri.parse(
'$baseUrl$pathUrl',
).replace(queryParameters: queryParams.isNotEmpty ? queryParams : null);
final request = http.Request('POST', uri);
if (body != null) {
request.headers['Content-Type'] = 'application/json';
request.body = jsonEncode(body.toJson());
}
final streamedResponse = await _client.send(request);
final response = await http.Response.fromStream(streamedResponse);
if (response.statusCode != 200 && response.statusCode != 204) {
throw Exception('HTTP ${response.statusCode}: ${response.body}');
}
if (response.statusCode == 204) return '';
return response.body;
}