Source code for runway.core.providers.aws._response
"""Base class for AWS responses."""
from http import HTTPStatus
from typing import Any, Dict
from pydantic import Field
from ....utils import BaseModel
[docs]class ResponseError(BaseModel):
"""Analyse the response from AWS S3 HeadBucket API response.
Keyword Args:
Code: A unique short code representing the error that was emitted.
Message: A longer human readable error message.
"""
code: str = Field(default="", alias="Code")
"""A unique short code representing the error that was emitted."""
message: str = Field(default="", alias="Message")
"""A longer human readable error message."""
[docs] def __bool__(self) -> bool:
"""Implement evaluation of instances as a bool."""
return bool(self.code or self.message)
[docs]class ResponseMetadata(BaseModel):
"""Analyse the response from AWS S3 HeadBucket API response.
Keyword Args:
HostId: Host ID data.
HTTPHeaders: A map of response header keys and their respective values.
HTTPStatusCode: The HTTP status code of the response (e.g., 200, 404).
RequestId: The unique request ID associated with the response.
Log this value when debugging requests for AWS support.
RetryAttempts: The number of retries that were attempted before the
request was completed.
"""
host_id: str = Field(default="", alias="HostId")
"""Host ID data."""
https_headers: Dict[str, Any] = Field(default={}, alias="HTTPHeaders")
"""A map of response header keys and their respective values."""
http_status_code: int = Field(default=200, alias="HTTPStatusCode")
"""he HTTP status code of the response (e.g., 200, 404)."""
request_id: str = Field(default="", alias="RequestId")
"""The unique request ID associated with the response.
Log this value when debugging requests for AWS support.
"""
retry_attempts: int = Field(default=0, alias="RetryAttempts")
"""The number of retries that were attempted before the request was completed."""
@property
def forbidden(self) -> bool:
"""Whether the response returned 403 (forbidden)."""
return self.http_status_code == HTTPStatus.FORBIDDEN
@property
def not_found(self) -> bool:
"""Whether the response returned 404 (Not Found)."""
return self.http_status_code == HTTPStatus.NOT_FOUND
[docs]class BaseResponse(BaseModel):
"""Analyse the response from AWS S3 HeadBucket API response.
Keyword Args:
Error: Information about a service or networking error.
ResponseMetadata: Information about the request.
"""
error: ResponseError = Field(default=ResponseError(), alias="Error")
"""Information about a service or networking error."""
metadata: ResponseMetadata = Field(
default=ResponseMetadata(), alias="ResponseMetadata"
)
"""Information about the request."""