from moto.core.responses import BaseResponse
from .models import sdb_backends, SimpleDBBackend
class SimpleDBResponse(BaseResponse):
def __init__(self) -> None:
super().__init__(service_name="sdb")
@property
def sdb_backend(self) -> SimpleDBBackend:
return sdb_backends[self.current_account][self.region]
def create_domain(self) -> str:
domain_name = self._get_param("DomainName")
self.sdb_backend.create_domain(domain_name=domain_name)
template = self.response_template(CREATE_DOMAIN_TEMPLATE)
return template.render()
def delete_domain(self) -> str:
domain_name = self._get_param("DomainName")
self.sdb_backend.delete_domain(domain_name=domain_name)
template = self.response_template(DELETE_DOMAIN_TEMPLATE)
return template.render()
def list_domains(self) -> str:
domain_names = self.sdb_backend.list_domains()
template = self.response_template(LIST_DOMAINS_TEMPLATE)
return template.render(domain_names=domain_names, next_token=None)
def get_attributes(self) -> str:
domain_name = self._get_param("DomainName")
item_name = self._get_param("ItemName")
attribute_names = self._get_multi_param("AttributeName.")
attributes = self.sdb_backend.get_attributes(
domain_name=domain_name,
item_name=item_name,
attribute_names=attribute_names,
)
template = self.response_template(GET_ATTRIBUTES_TEMPLATE)
return template.render(attributes=attributes)
def put_attributes(self) -> str:
domain_name = self._get_param("DomainName")
item_name = self._get_param("ItemName")
attributes = self._get_list_prefix("Attribute")
self.sdb_backend.put_attributes(
domain_name=domain_name, item_name=item_name, attributes=attributes
)
template = self.response_template(PUT_ATTRIBUTES_TEMPLATE)
return template.render()
CREATE_DOMAIN_TEMPLATE = """
"""
LIST_DOMAINS_TEMPLATE = """
{% for name in domain_names %}
{{ name }}
{% endfor %}
{{ next_token }}
"""
DELETE_DOMAIN_TEMPLATE = """
64d9c3ac-ef19-2e3d-7a03-9ea46205eb71
0.0055590278
"""
PUT_ATTRIBUTES_TEMPLATE = """
"""
GET_ATTRIBUTES_TEMPLATE = """
1549581b-12b7-11e3-895e-1334aEXAMPLE
{% for attribute in attributes %}
{{ attribute["name"] }}
{{ attribute["value"] }}
{% endfor %}
"""