# coding:utf-8
"""
REST API for metadata
Copyright (C) 2020 JASRI All Rights Reserved.
"""
import json
import requests
from . import config
from . import util
[docs]class Main():
def __init__(self, parent):
self.__parent = parent
self.mappings = Mappings(self)
self.keys = Keys(self)
[docs] def endpoint(self, path):
return self.__parent.endpoint(path)
[docs] def access_token(self):
return self.__parent.access_token()
[docs]class Mappings():
def __init__(self, parent):
self.__parent = parent
self.__endpoint = parent.endpoint(config.metadata_mappings_path)
[docs] def post(self, **v):
"""
REST API: メタデータのマッピング情報取得
* Endpoint : [agent-url]/benten/v1/metadata/mappings
* Method : POST
* Response: JSON
* Authorization : 要
:param \**v:
See below.
:Keyword Arguments:
* *index_name* (``str`` [Option]) : index名
* ex. : spring8-bl14b2
* 省略時、アカウントでログイン時はその名前が適用される。
* *facility* (``str`` [Option]) : facility名
* ex. : SPring-8
* *division_name* (``str`` [Option]) : division名
* ex. : BL14B2
(注) 上記指定がない際はログインアカウントに属するindexを用いてマッピング情報を取得する
:return:
A dict of mapping keys.
:Keyword:
* properties (``dict``) : メタデータ マッピング情報
"""
vdata = {}
for key in ["index_name", "facility", "division_name"]:
if key in v:
vdata[key] = v[key]
ret = requests.post(self.__endpoint, vdata, verify=False,
headers=util.headers_authorization(self.__parent.access_token()))
return util.json_response(ret)
[docs]class Keys():
def __init__(self, parent):
self.__parent = parent
self.__endpoint = parent.endpoint(config.metadata_keys_path)
[docs] def post(self, **v):
"""
REST API: メタデータのKey情報取得
* Endpoint : [agent-url]/benten/v1/metadata/keys
* Method : POST
* Response: JSON
* Authorization : 要
:param \**v:
See below.
:Keyword Arguments:
:return:
A dict of mapping keys.
:Keyword:
* *index_name* (``str``) : index名
* *list* (``list(str)``) : Keyリスト
* *error* (``dict``) : エラー情報 (エラー発生時のみ附加)
"""
vdata = {}
ret = requests.post(self.__endpoint, vdata, verify=False,
headers=util.headers_authorization(self.__parent.access_token()))
return util.json_response(ret)