From 4efb23e5da2d5e1617339b4dd869238f96646131 Mon Sep 17 00:00:00 2001 From: Cyber MacGeddon Date: Sun, 4 May 2025 21:32:43 +0100 Subject: [PATCH] Get operations --- test-api/test-library-get-document-content | 41 ++++++++++++++++++ test-api/test-library-get-document-metadata | 42 +++++++++++++++++++ .../trustgraph/gateway/dispatch/librarian.py | 2 +- .../trustgraph/librarian/blob_store.py | 11 +++++ .../trustgraph/librarian/librarian.py | 42 ++++++++++++++++++- 5 files changed, 135 insertions(+), 3 deletions(-) create mode 100755 test-api/test-library-get-document-content create mode 100755 test-api/test-library-get-document-metadata diff --git a/test-api/test-library-get-document-content b/test-api/test-library-get-document-content new file mode 100755 index 00000000..5a8b2880 --- /dev/null +++ b/test-api/test-library-get-document-content @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 + +import requests +import json +import sys +import base64 + +url = "http://localhost:8088/api/v1/" + +############################################################################ + +id = "http://trustgraph.ai/doc/9fdee98b-b259-40ac-bcb9-8e82ccedeb04" + +user = "trustgraph" + +input = { + "operation": "get-document-content", + "user": user, + "document-id": id, +} + +resp = requests.post( + f"{url}librarian", + json=input, +) + +resp = resp.json() + +if "error" in resp: + print(f"Error: {resp['error']}") + sys.exit(1) + + +content = base64.b64decode(resp["content"]).decode("utf-8") + +print(content) + +sys.exit(0) + +############################################################################ + diff --git a/test-api/test-library-get-document-metadata b/test-api/test-library-get-document-metadata new file mode 100755 index 00000000..0bcdd321 --- /dev/null +++ b/test-api/test-library-get-document-metadata @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 + +import requests +import json +import sys +import base64 + +url = "http://localhost:8088/api/v1/" + +############################################################################ + +id = "http://trustgraph.ai/doc/9fdee98b-b259-40ac-bcb9-8e82ccedeb04" + +user = "trustgraph" + +input = { + "operation": "get-document-metadata", + "user": user, + "document-id": id, +} + +resp = requests.post( + f"{url}librarian", + json=input, +) + +print(resp.text) +resp = resp.json() + +print(resp) + +if "error" in resp: + print(f"Error: {resp['error']}") + sys.exit(1) + +# print(resp["response"]) +print(resp) + +sys.exit(0) + +############################################################################ + diff --git a/trustgraph-flow/trustgraph/gateway/dispatch/librarian.py b/trustgraph-flow/trustgraph/gateway/dispatch/librarian.py index 18db0896..d33138ac 100644 --- a/trustgraph-flow/trustgraph/gateway/dispatch/librarian.py +++ b/trustgraph-flow/trustgraph/gateway/dispatch/librarian.py @@ -75,7 +75,7 @@ class LibrarianRequestor(ServiceRequestor): ) if message.content: - response["content"] = message.content + response["content"] = message.content.decode("utf-8") if message.document_metadatas != None: response["document-metadatas"] = [ diff --git a/trustgraph-flow/trustgraph/librarian/blob_store.py b/trustgraph-flow/trustgraph/librarian/blob_store.py index dcc8b112..3368f57e 100644 --- a/trustgraph-flow/trustgraph/librarian/blob_store.py +++ b/trustgraph-flow/trustgraph/librarian/blob_store.py @@ -60,3 +60,14 @@ class BlobStore: print("Remove blob complete", flush=True) + + async def get(self, object_id): + + # FIXME: Loop retry + resp = self.minio.get_object( + bucket_name = self.bucket_name, + object_name = "doc/" + str(object_id), + ) + + return resp.read() + diff --git a/trustgraph-flow/trustgraph/librarian/librarian.py b/trustgraph-flow/trustgraph/librarian/librarian.py index 414e87be..5bf5a672 100644 --- a/trustgraph-flow/trustgraph/librarian/librarian.py +++ b/trustgraph-flow/trustgraph/librarian/librarian.py @@ -134,10 +134,48 @@ class Librarian: ) async def get_document_metadata(self, request): - raise RuntimeError("Not implemented") + + print("GET DOC...") + + doc = await self.table_store.get_document( + request.user, + request.document_id + ) + + print("Get complete", flush=True) + + return LibrarianResponse( + error = None, + document_metadata = doc, + content = None, + document_metadatas = None, + processing_metadatas = None, + ) async def get_document_content(self, request): - raise RuntimeError("Not implemented") + + print("GET DOC CONTENT...") + + object_id = await self.table_store.get_document_object_id( + request.user, + request.document_id + ) + + print("Now", object_id) + + content = await self.blob_store.get( + object_id + ) + + print("Get complete", flush=True) + + return LibrarianResponse( + error = None, + document_metadata = None, + content = base64.b64encode(content), + document_metadatas = None, + processing_metadatas = None, + ) async def add_processing(self, request): raise RuntimeError("Not implemented")