refactor: extract MdrsClient service layer for library portability
To improve the tool's portability as a Python library, the core logic has been decoupled from the CLI interface. This allows developers to programmatically interact with MDRS without relying on CLI-specific argument parsing or local file-based caches. - Introduce `MdrsClient` service layer to handle core operations. - Abstract authentication state using `CacheInterface` and `InMemoryCache`. - Migrate all CLI commands to utilize `MdrsClient` for execution. - Separate `Doi` data model from API responses and move to `models/doi.py`. - Update `README.md` to include Python API usage examples. - Bump package version to 1.3.17.
This commit is contained in:
@@ -19,11 +19,11 @@ class LabsCommand(BaseCommand):
|
||||
|
||||
@classmethod
|
||||
def labs(cls, remote: str) -> None:
|
||||
remote = cls._parse_remote_host(remote)
|
||||
connection = cls._create_connection(remote)
|
||||
laboratory_api = LaboratoriesApi(connection)
|
||||
laboratories = laboratory_api.list()
|
||||
connection.laboratories = laboratories
|
||||
remote_host = cls._parse_remote_host(remote)
|
||||
from mdrsclient.client import MdrsClient
|
||||
|
||||
client = MdrsClient.from_remote(remote_host)
|
||||
laboratories = client.get_laboratories()
|
||||
label = {"id": "ID", "name": "Name", "pi_name": "PI", "full_name": "Laboratory"}
|
||||
length: dict[str, int] = {}
|
||||
for key in label.keys():
|
||||
@@ -34,7 +34,6 @@ class LabsCommand(BaseCommand):
|
||||
length["pi_name"] = max(length["pi_name"], len(laboratory.pi_name))
|
||||
length["full_name"] = max(length["full_name"], len(laboratory.full_name))
|
||||
header = (
|
||||
# f"{label['id']:{length['id']}}\t{label['name']:{length['name']}}\t"
|
||||
f"{label['name']:{length['name']}}\t"
|
||||
f"{label['pi_name']:{length['pi_name']}}\t{label['full_name']:{length['full_name']}}"
|
||||
)
|
||||
@@ -42,7 +41,6 @@ class LabsCommand(BaseCommand):
|
||||
print("-" * len(header.expandtabs()))
|
||||
for laboratory in laboratories:
|
||||
print(
|
||||
# f"{laboratory.id:{length['id']}}\t{laboratory.name:{length['name']}}\t"
|
||||
f"{laboratory.name:{length['name']}}\t"
|
||||
f"{laboratory.pi_name:{length['pi_name']}}\t{laboratory.full_name:{length['full_name']}}"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user