(params, request, endpoint, *, rs_type=None, payload_version=None, timeout=None)
| 838 | |
| 839 | |
| 840 | def communicate_rest(params, request, endpoint, *, rs_type=None, payload_version=None, timeout=None): |
| 841 | api_request_payload = APIRequest_pb2.ApiRequestPayload() |
| 842 | if params.session_token: |
| 843 | api_request_payload.encryptedSessionToken = utils.base64_url_decode(params.session_token) |
| 844 | if request: |
| 845 | if logging.getLogger().level <= logging.DEBUG: |
| 846 | js = google.protobuf.json_format.MessageToJson(request) |
| 847 | logging.debug('>>> [RQ] %s: %s', endpoint, js) |
| 848 | api_request_payload.payload = request.SerializeToString() |
| 849 | if isinstance(payload_version, int): |
| 850 | api_request_payload.apiVersion = payload_version |
| 851 | |
| 852 | rs = rest_api.execute_rest(params.rest_context, endpoint, api_request_payload, timeout=timeout) |
| 853 | if isinstance(rs, bytes): |
| 854 | TTK.update_time_of_last_activity() |
| 855 | if rs_type: |
| 856 | proto_rs = rs_type() |
| 857 | proto_rs.ParseFromString(rs) |
| 858 | if logging.getLogger().level <= logging.DEBUG: |
| 859 | js = google.protobuf.json_format.MessageToJson(proto_rs) |
| 860 | logging.debug('>>> [RS] %s: %s', endpoint, js) |
| 861 | return proto_rs |
| 862 | else: |
| 863 | return rs |
| 864 | elif isinstance(rs, dict): |
| 865 | kae = KeeperApiError(rs['error'], rs['message']) |
| 866 | kae.additional_info = rs.get('additional_info') |
| 867 | |
| 868 | if kae.result_code == 'session_token_expired': |
| 869 | params.session_token = None |
| 870 | raise kae |
| 871 | raise KeeperApiError('Error', endpoint) |
| 872 | |
| 873 | |
| 874 | def communicate(params, request, retry_on_throttle=True): |
no test coverage detected