  def GetObjectMetadata(self,
                        gcs_path: str,
                        user_project: Optional[str] = None) -> Dict[str, Any]:
    """Get API operation object metadata for Google Cloud Storage object.

    Args:
      gcs_path (str): File path to a resource in GCS.
          Ex: gs://bucket/folder/obj
      user_project (str): The project ID to be billed for this request.
          Required for Requester Pays buckets.

    Returns:
      Dict: An API operation object for a Google Cloud Storage object.
           https://cloud.google.com/storage/docs/json_api/v1/objects#resource
    """
    if not gcs_path.startswith('gs://'):
      gcs_path = 'gs://' + gcs_path
    bucket, object_path = SplitStoragePath(gcs_path)
    gcs_objects = self.GcsApi().objects() # pylint: disable=no-member
    request = gcs_objects.get(
        bucket=bucket, object=object_path, userProject=user_project)
    response = request.execute()  # type: Dict[str, Any]
    return response
Get API operation object metadata for Google Cloud Storage object.

Args:
gcs_path (str): File path to a resource in GCS.
Ex: gs://bucket/folder/obj
user_project (str): The project ID to be billed for this request.
Required for Requester Pays buckets.

Returns:
Dict: An API operation object for a Google Cloud Storage object.
https://cloud.google.com/storage/docs/json_api/v1/objects#resource
libcloudforensics/providers/gcp/internal/storage.py