(params, request, endpoint, *, rs_type=None, payload_version=None, timeout=None)
| 874 | |
| 875 | |
| 876 | def communicate_rest(params, request, endpoint, *, rs_type=None, payload_version=None, timeout=None): |
| 877 | api_request_payload = APIRequest_pb2.ApiRequestPayload() |
| 878 | if params.session_token: |
| 879 | api_request_payload.encryptedSessionToken = utils.base64_url_decode(params.session_token) |
| 880 | if request: |
| 881 | if logging.getLogger().level <= logging.DEBUG: |
| 882 | js = google.protobuf.json_format.MessageToJson(request) |
| 883 | logging.debug('>>> [RQ] %s: %s', endpoint, js) |
| 884 | api_request_payload.payload = request.SerializeToString() |
| 885 | if isinstance(payload_version, int): |
| 886 | api_request_payload.apiVersion = payload_version |
| 887 | |
| 888 | rs = rest_api.execute_rest(params.rest_context, endpoint, api_request_payload, timeout=timeout) |
| 889 | if isinstance(rs, bytes): |
| 890 | TTK.update_time_of_last_activity() |
| 891 | if rs_type: |
| 892 | proto_rs = rs_type() |
| 893 | proto_rs.ParseFromString(rs) |
| 894 | if logging.getLogger().level <= logging.DEBUG: |
| 895 | js = google.protobuf.json_format.MessageToJson(proto_rs) |
| 896 | logging.debug('>>> [RS] %s: %s', endpoint, js) |
| 897 | return proto_rs |
| 898 | else: |
| 899 | return rs |
| 900 | elif isinstance(rs, dict): |
| 901 | kae = KeeperApiError(rs['error'], rs['message']) |
| 902 | kae.additional_info = rs.get('additional_info') |
| 903 | |
| 904 | if kae.result_code == 'session_token_expired': |
| 905 | params.session_token = None |
| 906 | raise kae |
| 907 | raise KeeperApiError('Error', endpoint) |
| 908 | |
| 909 | |
| 910 | def communicate(params, request, retry_on_throttle=True): |
no test coverage detected