Skip to content

hololinked.td.forms.Form

Bases: Schema

Form hypermedia. schema - https://www.w3.org/TR/wot-thing-description11/#form

Source code in hololinked/hololinked/td/forms.py
class Form(Schema):
    """
    Form hypermedia.
    schema - https://www.w3.org/TR/wot-thing-description11/#form
    """

    href: str = None
    op: str = None
    htv_methodName: str = Field(default=None, alias="htv:methodName")
    mqv_topic: str = Field(default=None, alias="mqv:topic")
    contentType: Optional[str] = "application/json"
    additionalResponses: Optional[list[AdditionalExpectedResponse]] = None
    contentEncoding: Optional[str] = None
    security: Optional[str] = None
    scopes: Optional[str] = None
    response: Optional[ExpectedResponse] = None
    subprotocol: Optional[str] = None

    def __init__(self):
        super().__init__()

    @classmethod
    def from_TD(cls, form_json: dict[str, Any]) -> "Form":
        """
        Create a Form instance from a Thing Description JSON object.

        Parameters
        ----------
        form_json: dict[str, Any]
            The JSON representation of the form.

        Returns
        -------
        Form
            An instance of Form.
        """
        form = cls()
        for field in cls.model_fields:
            if field == "htv_methodName" and "htv:methodName" in form_json:
                setattr(form, field, form_json["htv:methodName"])
            elif field == "mqv_topic" and "mqv:topic" in form_json:
                setattr(form, field, form_json["mqv:topic"])
            elif field in form_json:
                setattr(form, field, form_json[field])
        return form

    def __str__(self) -> str:
        return f"Form(href={self.href}, op={self.op}, htv_methodName={self.htv_methodName}, contentType={self.contentType})"

Functions

from_TD classmethod

from_TD(form_json: dict[str, Any]) -> Form

Create a Form instance from a Thing Description JSON object.

Parameters:

Name Type Description Default

form_json

dict[str, Any]

The JSON representation of the form.

required

Returns:

Type Description
Form

An instance of Form.

Source code in hololinked/hololinked/td/forms.py
@classmethod
def from_TD(cls, form_json: dict[str, Any]) -> "Form":
    """
    Create a Form instance from a Thing Description JSON object.

    Parameters
    ----------
    form_json: dict[str, Any]
        The JSON representation of the form.

    Returns
    -------
    Form
        An instance of Form.
    """
    form = cls()
    for field in cls.model_fields:
        if field == "htv_methodName" and "htv:methodName" in form_json:
            setattr(form, field, form_json["htv:methodName"])
        elif field == "mqv_topic" and "mqv:topic" in form_json:
            setattr(form, field, form_json["mqv:topic"])
        elif field in form_json:
            setattr(form, field, form_json[field])
    return form