fix(connection): support absolute download urls for public data

This commit is contained in:
2026-06-11 21:04:28 +09:00
parent 428be1289c
commit 04c0003a61
4 changed files with 13 additions and 9 deletions
+1 -6
View File
@@ -5,12 +5,7 @@ from pydantic import TypeAdapter
from requests import Response from requests import Response
from mdrsclient.connection import MDRSConnection from mdrsclient.connection import MDRSConnection
from mdrsclient.exceptions import ( from mdrsclient.exceptions import BadRequestException, ForbiddenException, UnauthorizedException, UnexpectedException
BadRequestException,
ForbiddenException,
UnauthorizedException,
UnexpectedException,
)
from mdrsclient.models.error import DRFStandardizedErrors from mdrsclient.models.error import DRFStandardizedErrors
+7 -2
View File
@@ -54,7 +54,10 @@ class FilesApi(BaseApi):
try: try:
with open(os.path.realpath(path), mode="rb") as fp: with open(os.path.realpath(path), mode="rb") as fp:
data = MultipartEncoder( data = MultipartEncoder(
fields={"folder_id": folder_id, "file": (normalize("NFC", os.path.basename(path)), fp, self._get_mime_type(path))} fields={
"folder_id": folder_id,
"file": (normalize("NFC", os.path.basename(path)), fp, self._get_mime_type(path)),
}
) )
response = self.connection.post(url, data=data, headers={"Content-Type": data.content_type}) response = self.connection.post(url, data=data, headers={"Content-Type": data.content_type})
self._raise_response_error(response) self._raise_response_error(response)
@@ -76,7 +79,9 @@ class FilesApi(BaseApi):
# update file body # update file body
try: try:
with open(os.path.realpath(path), mode="rb") as fp: with open(os.path.realpath(path), mode="rb") as fp:
data = MultipartEncoder(fields={"file": (normalize("NFC", os.path.basename(path)), fp, self._get_mime_type(path))}) data = MultipartEncoder(
fields={"file": (normalize("NFC", os.path.basename(path)), fp, self._get_mime_type(path))}
)
response = self.connection.put(url, data=data, headers={"Content-Type": data.content_type}) response = self.connection.put(url, data=data, headers={"Content-Type": data.content_type})
except OSError: except OSError:
raise UnexpectedException(f"Could not open `{path}` file.") raise UnexpectedException(f"Could not open `{path}` file.")
+3 -1
View File
@@ -28,7 +28,9 @@ class ConfigCommand(BaseCommand):
list_parser = config_parsers.add_parser("list", help="list all the remote hosts", aliases=["ls"]) list_parser = config_parsers.add_parser("list", help="list all the remote hosts", aliases=["ls"])
list_parser.set_defaults(func=cls.func_list) list_parser.set_defaults(func=cls.func_list)
# config delete # config delete
delete_parser = config_parsers.add_parser("delete", help="delete an existing remote host", aliases=["remove", "rm"]) delete_parser = config_parsers.add_parser(
"delete", help="delete an existing remote host", aliases=["remove", "rm"]
)
delete_parser.add_argument("remote", help="label of remote host") delete_parser.add_argument("remote", help="label of remote host")
delete_parser.set_defaults(func=cls.func_delete) delete_parser.set_defaults(func=cls.func_delete)
+2
View File
@@ -92,6 +92,8 @@ class MDRSConnection:
self.__cache.laboratories = laboratories self.__cache.laboratories = laboratories
def __build_url(self, path: str) -> str: def __build_url(self, path: str) -> str:
if path.startswith("http://") or path.startswith("https://"):
return path
if self.url == "": if self.url == "":
raise MissingConfigurationException("remote host is not configured") raise MissingConfigurationException("remote host is not configured")
return f"{self.url}/{path}" return f"{self.url}/{path}"