Source code for benten_client.rest_proposal
# coding:utf-8
"""
REST API for proposal DB
Copyright (C) 2020 JASRI All Rights Reserved.
History:
28-Nov-2017 matumot, add Metadata
06-Nov-2017 matumot, created
"""
import json
import requests
from . import config
from . import util
[docs]class Main():
def __init__(self, parent):
self.__parent = parent
self.__endpoint = parent.endpoint(config.proposal_path)
self.metadata = Metadata(self)
[docs] def post(self, **v):
"""
REST API: 課題番号情報取得
* Endpoint : [agent-url]/benten/v1/benten/proposal
* Method : POST
* Authorization : 要
:param \**v:
See below.
:Keyword Arguments:
* *begindate* (``str`` [Option]) : 検索日時の始まり
* ex. 2017-04-05 00:00:00
* 省略時は全検索
* *enddate* (``str`` [Option]) : 検索日時の終わり
* ex. 2017-07-25 00:00:00
* 省略時は全検索
* *facility* (``str`` [Option]) : 施設名
* ex. SPring-8
* 課題番号リストを施設毎に取得できるように、施設名入力のオプションを設けている。しかし、現在は未実装。
:return:
A dict of mapping keys.
:Keyword:
* *list* (``list(str)``) : 課題番号リスト
* *error* (``dict``) : エラー情報 (エラー発生時のみ附加)
(注) jstreeで扱いやすいデータフォーマットで返答する。上記は暫定のデータフォーマット。
Error messages:
* invalid account profile(=xxx) : アカウントのprofile 情報が妥当でない
"""
vdata = {}
for key in ["begindate", "enddate", "facility"]:
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 Metadata():
def __init__(self, parent):
self.__parent = parent
self.__endpoint = parent.endpoint(config.proposal_metadata_path)
[docs] def post(self, **v):
"""
REST API: 課題DBに属するメタデータ取得
* Endpoint : [agent-url]/benten/v1/proposal/metadata
* Method : POST
* Authorization : 要
:param \**v:
See below.
:Keyword Arguments:
* *facility* (``str`` [Option]): 施設名
* 現在は未実装
* *proposal_number* (``str`` [Option]) : 課題番号
:return:
A dict of mapping keys.
:Keyword:
* *found* (``bool``) : 指定Inputが存在するかどうかを示すフラグ (存在している場合は True)
* *metadata* (``dict``) : メタデータ
* *error* (``dict``) : エラー情報 (エラー発生時のみ付加)
"""
vdata = {}
for key in ["facility", "proposal_number"]:
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)