Represents an endpoint for a particular service in a specific region. Only an endpoint can make requests. :ivar service: The Service object that describes this endpoints service. :ivar host: The fully qualified endpoint hostname. :ivar session: The session object.
| 75 | |
| 76 | |
| 77 | class Endpoint: |
| 78 | """ |
| 79 | Represents an endpoint for a particular service in a specific |
| 80 | region. Only an endpoint can make requests. |
| 81 | |
| 82 | :ivar service: The Service object that describes this endpoints |
| 83 | service. |
| 84 | :ivar host: The fully qualified endpoint hostname. |
| 85 | :ivar session: The session object. |
| 86 | """ |
| 87 | |
| 88 | def __init__( |
| 89 | self, |
| 90 | host, |
| 91 | endpoint_prefix, |
| 92 | event_emitter, |
| 93 | response_parser_factory=None, |
| 94 | http_session=None, |
| 95 | ): |
| 96 | self._endpoint_prefix = endpoint_prefix |
| 97 | self._event_emitter = event_emitter |
| 98 | self.host = host |
| 99 | self._lock = threading.Lock() |
| 100 | if response_parser_factory is None: |
| 101 | response_parser_factory = parsers.ResponseParserFactory() |
| 102 | self._response_parser_factory = response_parser_factory |
| 103 | self.http_session = http_session |
| 104 | if self.http_session is None: |
| 105 | self.http_session = URLLib3Session() |
| 106 | |
| 107 | def __repr__(self): |
| 108 | return f'{self._endpoint_prefix}({self.host})' |
| 109 | |
| 110 | def make_request(self, operation_model, request_dict): |
| 111 | logger.debug( |
| 112 | "Making request for %s with params: %s", |
| 113 | operation_model, |
| 114 | request_dict, |
| 115 | ) |
| 116 | return self._send_request(request_dict, operation_model) |
| 117 | |
| 118 | def create_request(self, params, operation_model=None): |
| 119 | request = create_request_object(params) |
| 120 | if operation_model: |
| 121 | request.stream_output = any( |
| 122 | [ |
| 123 | operation_model.has_streaming_output, |
| 124 | operation_model.has_event_stream_output, |
| 125 | ] |
| 126 | ) |
| 127 | service_id = operation_model.service_model.service_id.hyphenize() |
| 128 | event_name = f'request-created.{service_id}.{operation_model.name}' |
| 129 | self._event_emitter.emit( |
| 130 | event_name, |
| 131 | request=request, |
| 132 | operation_name=operation_model.name, |
| 133 | ) |
| 134 | prepared_request = self.prepare_request(request) |
no outgoing calls