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 endpoint(self, path): return self.__parent.endpoint(path)
[docs] def access_token(self): return self.__parent.access_token()
[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)