-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Implement resopnse handlers Signed-off-by: Daniel Widdis <widdis@gmail.com> * Add missing test which uncovered missing return statement Signed-off-by: Daniel Widdis <widdis@gmail.com> * Ignore unreachable protobuf code branch Signed-off-by: Daniel Widdis <widdis@gmail.com> * Fix event loop deprecation warning Signed-off-by: Daniel Widdis <widdis@gmail.com> --------- Signed-off-by: Daniel Widdis <widdis@gmail.com>
- Loading branch information
Showing
19 changed files
with
375 additions
and
109 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
31 changes: 31 additions & 0 deletions
31
src/opensearch_sdk_py/actions/internal/register_rest_actions_response_handler.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
# | ||
# Copyright OpenSearch Contributors | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# | ||
# The OpenSearch Contributors require contributions made to | ||
# this file be licensed under the Apache-2.0 license or a | ||
# compatible open source license. | ||
# | ||
|
||
import logging | ||
|
||
from opensearch_sdk_py.actions.request_response_handler import RequestResponseHandler | ||
from opensearch_sdk_py.actions.response_handler import ResponseHandler | ||
from opensearch_sdk_py.transport.acknowledged_response import AcknowledgedResponse | ||
from opensearch_sdk_py.transport.outbound_message_request import OutboundMessageRequest | ||
from opensearch_sdk_py.transport.stream_input import StreamInput | ||
from opensearch_sdk_py.transport.stream_output import StreamOutput | ||
|
||
|
||
class RegisterRestActionsResponseHandler(ResponseHandler): | ||
def __init__(self, next_handler: RequestResponseHandler) -> None: | ||
self.next_handler = next_handler | ||
|
||
def handle(self, request: OutboundMessageRequest, input: StreamInput) -> StreamOutput: | ||
ack_response = AcknowledgedResponse().read_from(input) | ||
logging.debug(f"< {ack_response}") | ||
if ack_response.status: | ||
return self.next_handler.send() | ||
else: | ||
# TODO error handling | ||
return None |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# | ||
# Copyright OpenSearch Contributors | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# | ||
# The OpenSearch Contributors require contributions made to | ||
# this file be licensed under the Apache-2.0 license or a | ||
# compatible open source license. | ||
# | ||
|
||
from abc import ABC, abstractmethod | ||
|
||
from opensearch_sdk_py.transport.stream_output import StreamOutput | ||
|
||
|
||
class RequestResponseHandler(ABC): | ||
@abstractmethod | ||
def send(self) -> StreamOutput: | ||
pass # pragma: no cover |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# | ||
# Copyright OpenSearch Contributors | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# | ||
# The OpenSearch Contributors require contributions made to | ||
# this file be licensed under the Apache-2.0 license or a | ||
# compatible open source license. | ||
# | ||
|
||
import logging | ||
from abc import abstractmethod | ||
from typing import Optional | ||
|
||
from opensearch_sdk_py.actions.request_response_handler import RequestResponseHandler | ||
from opensearch_sdk_py.transport.outbound_message_request import OutboundMessageRequest | ||
from opensearch_sdk_py.transport.outbound_message_response import OutboundMessageResponse | ||
from opensearch_sdk_py.transport.stream_input import StreamInput | ||
from opensearch_sdk_py.transport.stream_output import StreamOutput | ||
|
||
|
||
class ResponseHandler(RequestResponseHandler): | ||
@abstractmethod | ||
def handle(self, response: OutboundMessageResponse, input: StreamInput = None) -> Optional[bytes]: | ||
pass # pragma: no cover | ||
|
||
def send(self, request: OutboundMessageRequest) -> StreamOutput: | ||
output = StreamOutput() | ||
request.write_to(output) | ||
raw_out = output.getvalue() | ||
logging.info(f"> {request.__str__()}, size={len(raw_out)} byte(s)") | ||
logging.debug(f"> #{raw_out}") | ||
return output |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# | ||
# Copyright OpenSearch Contributors | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# | ||
# The OpenSearch Contributors require contributions made to | ||
# this file be licensed under the Apache-2.0 license or a | ||
# compatible open source license. | ||
# | ||
|
||
from typing import Dict, Optional | ||
|
||
from opensearch_sdk_py.actions.response_handler import ResponseHandler | ||
from opensearch_sdk_py.extension import Extension | ||
from opensearch_sdk_py.transport.outbound_message_response import OutboundMessageResponse | ||
from opensearch_sdk_py.transport.stream_input import StreamInput | ||
|
||
|
||
class ResponseHandlers(Dict[int, ResponseHandler]): | ||
def __init__(self, extension: Extension) -> None: | ||
self.extension = extension | ||
|
||
def register(self, request_id: int, handler: ResponseHandler) -> None: | ||
self[request_id] = handler | ||
|
||
def handle(self, response: OutboundMessageResponse, input: StreamInput = None) -> Optional[bytes]: | ||
handler = self[response.request_id] | ||
del self[response.request_id] | ||
return handler.handle(response, input) if handler else None |
Oops, something went wrong.