Skip to content

Commit 9b19ef1

Browse files
committed
feat: refined file.key support
To work around that scan does not return a `url` field. LC ticket: 38823 slack: https://xindong.slack.com/archives/C01TLAHFTBJ/p1639134311164500
1 parent 0a7c94a commit 9b19ef1

3 files changed

Lines changed: 13 additions & 2 deletions

File tree

leancloud/file_.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,8 @@ def _update_data(self, server_data):
289289
if "url" in server_data:
290290
self._url = server_data.get("url")
291291
self._successful_url = self._url
292+
if "key" in server_data:
293+
self.key = server_data.get("key")
292294
if "mime_type" in server_data:
293295
self._mime_type = server_data["mime_type"]
294296
if "metaData" in server_data:

leancloud/utils.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,9 @@ def decode(key, value):
137137
if _type == "File":
138138
f = leancloud.File(value["name"])
139139
meta_data = value.get("metaData")
140+
key = value.get("key")
140141
if meta_data:
141-
f._metadata = meta_data
142+
f._metadata = meta_data
142143
f._url = value["url"]
143144
f._successful_url = value["url"]
144145
f.id = value["objectId"]

tests/test_file.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@ def test_query(): # type: () -> None
149149
assert f.url
150150
assert f.name
151151
assert f.metadata
152+
if f.metadata.get("__source") == 'external':
153+
assert f.url
154+
else:
155+
assert f.key
152156

153157
assert isinstance(leancloud.File.query.first(), File)
154158

@@ -157,9 +161,13 @@ def test_scan(): # type: () -> None
157161
files = leancloud.Query("File").scan()
158162
for f in files:
159163
assert isinstance(f, File)
160-
assert f.key
161164
assert f.name
162165
assert f.metadata
166+
if f.metadata.get("__source") == 'external':
167+
assert f.url
168+
else:
169+
assert f.key
170+
163171

164172
@with_setup(setup_func)
165173
def test_save_external(): # type: () -> None

0 commit comments

Comments
 (0)