Skip to content

Commit f156c32

Browse files
committed
working GET endpoint add, POST is setup
1 parent 07f6f0d commit f156c32

File tree

3 files changed

+52
-2
lines changed

3 files changed

+52
-2
lines changed

src/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@
9696
(r"/api/metakg/consolidated/?", "handlers.api.MetaKGQueryHandler", {"biothing_type": "metakg_consolidated"}),
9797
(r"/api/metakg/consolidated/fields/?", "biothings.web.handlers.MetadataFieldHandler", {"biothing_type": "metakg_consolidated"}),
9898
(r"/api/metakg/paths/?", "handlers.api.MetaKGPathFinderHandler", {"biothing_type": "metakgpathfinder"}),
99+
(r"/api/metakg/parse/?", "handlers.api.MetaKGParserHandler"),
99100
]
100101

101102
# biothings web tester will read this

src/controller/smartapi.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,8 +369,28 @@ def is_trapi(self):
369369
"""return True if a TRAPI"""
370370
return self.has_tags("trapi", "translator")
371371

372-
def get_metakg(self, include_trapi=True):
373-
raw_metadata = decoder.to_dict(decoder.decompress(self._doc._raw))
372+
# def get_metakg(self, include_trapi=True):
373+
# raw_metadata = decoder.to_dict(decoder.decompress(self._doc._raw))
374+
# mkg_parser = MetaKGParser()
375+
# extra_data = {"id": self._id, "url": self.url}
376+
# self.metakg_errors = None # reset metakg_errors
377+
# if self.is_trapi:
378+
# metakg = mkg_parser.get_TRAPI_metadatas(raw_metadata, extra_data) if include_trapi else []
379+
# else:
380+
# metakg = mkg_parser.get_non_TRAPI_metadatas(raw_metadata, extra_data)
381+
# if mkg_parser.metakg_errors:
382+
# # hold metakg_errors for later use
383+
# self.metakg_errors = mkg_parser.metakg_errors
384+
# return metakg
385+
386+
def get_metakg(self, include_trapi=True, metadata_url=False):
387+
if metadata_url:
388+
data_id = decoder.get_id(self.url) # get ID
389+
doc = self.get(data_id)# get smartapi data
390+
self._doc = doc._doc
391+
raw_metadata = decoder.to_dict(decoder.decompress(doc._doc._raw))
392+
else:
393+
raw_metadata = decoder.to_dict(decoder.decompress(self._doc._raw))
374394
mkg_parser = MetaKGParser()
375395
extra_data = {"id": self._id, "url": self.url}
376396
self.metakg_errors = None # reset metakg_errors

src/handlers/api.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -686,3 +686,32 @@ async def get(self, *args, **kwargs):
686686
}
687687
await asyncio.sleep(0.01)
688688
self.finish(res)
689+
690+
class MetaKGParserHandler(QueryHandler):
691+
name="metakgparser"
692+
kwargs = {
693+
"GET": {
694+
"url": {
695+
"type": str,
696+
"required": True,
697+
"max": 1000,
698+
"description": "URL of the SmartAPI metadata to parse"
699+
},
700+
},
701+
"POST": {
702+
"type": dict,
703+
"required": True,
704+
"description": "Metadata content of the SmartAPI in JSON format"
705+
},
706+
}
707+
708+
709+
async def get(self, *args, **kwargs):
710+
if self.request.method == "GET":
711+
smartapi = SmartAPI(self.args.url)
712+
content=smartapi.get_metakg(metadata_url=self.args.url)
713+
self.finish(f"{content}")
714+
elif self.request.method == "POST":
715+
print(f"\n\n[INFO] HERE")
716+
# pass
717+
self.finish(f"HERE")

0 commit comments

Comments
 (0)