Google-cloud-storage中是否有与Python相对应的`refFromUrl`吗?

时间:2018-08-28 19:17:58

标签: python google-cloud-storage

Firebase API提供了便捷功能Storage::refFromUrlsource),可将URL转换为存储引用。

来自the source (location.ts),它看起来像是一个简单的正则表达式。

是否存在与google-cloud-storage API配合使用的等效Python方法来获取存储区和路径?

1 个答案:

答案 0 :(得分:1)

这是一个简单的正则表达式。这是我在几分钟后根据参考Javascript实现汇总的内容:

def _urlToBucketPath (url):
    """Convert a Firebase HTTP URL to a (bucket, path) tuple, 
    Firebase's `refFromURL`.
    """
    bucket_domain = '([A-Za-z0-9.\\-]+)'
    is_http = not url.startswith('gs://')

    if is_http:
        path = '(/([^?#]*).*)?$'
        version =  'v[A-Za-z0-9_]+'
        rex = (
            '^https?://firebasestorage\\.googleapis\\.com/' +
            version + '/b/' + bucket_domain + '/o' + path)
    else:
        gs_path = '(/(.*))?$'
        rex = '^gs://' + bucket_domain + gs_path

    matches = re.match(rex, url, re.I)
    if not matches:
        raise Exception('URL does not match a bucket: %s' % url)

    bucket, _, path = matches.groups()

    if is_http:
        path = urllib.parse.unquote(path)

    return (bucket, path)

我已要求将其添加到Firebase功能列表中,如果显示出来,我希望它会在firebase_admin.storage

中公开

使用bucketpath可以轻松创建存储引用。