import typing

from aws_lambda_tools.common.decorators import handle_session, aws_encode, json_encode
from aws_lambda_tools.common.response import Response
from conio_sdk_generated.openapi.v2.serde.models.escalate_token import EscalateToken

from conio_sdk.common.decorators import log_this, manage_errors
from conio_sdk.context import AWS_CONTEXT
from sdk_functions.functions import auth2resp, access_token


@log_this
@handle_session(AWS_CONTEXT)
@aws_encode()
@json_encode(message_type=EscalateToken)
@manage_errors
def escalate_token(msg: EscalateToken, event: typing.Dict, context=None) -> Response:
    from conio_sdk.ioc.vo.v2.escalate_token_ioc import escalate_token_vo_service
    return auth2resp(escalate_token_vo_service.escalate_token(access_token(context), msg.physical_device_id))
