generateUploadUrl method

Returns a signed URL for uploading a function source code. For more information about the signed URL usage see: https://cloud.google.com/storage/docs/access-control/signed-urls. Once the function source code upload is complete, the used signed URL should be provided in CreateFunction or UpdateFunction request as a reference to the function source code.

When uploading source code to the generated signed URL, please follow these restrictions:

  • Source file type should be a zip file.
  • No credentials should be attached - the signed URLs provide access to the target bucket using internal service identity; if credentials were attached, the identity from the credentials would be used, but that identity does not have permissions to upload files to the URL.

When making a HTTP PUT request, specify this header:

  • content-type: application/zip

Do not specify this header:

  • Authorization: Bearer YOUR_TOKEN

Throws a http.ClientException if there were problems communicating with the API service. Throws a StatusException if the API failed with a Status message. Throws a ServiceException for any other failure.

Implementation

Future<GenerateUploadUrlResponse> generateUploadUrl(
  GenerateUploadUrlRequest request,
) async {
  final url = Uri.https(
    _host,
    '/v2/${request.parent}/functions:generateUploadUrl',
  );
  final response = await _client.post(url, body: request);
  return GenerateUploadUrlResponse.fromJson(response);
}