# coding: utf-8

from typing import Dict, List  # noqa: F401

from fastapi import (  # noqa: F401
    APIRouter,
    Body,
    Cookie,
    Depends,
    Form,
    Header,
    Path,
    Query,
    Response,
    Security,
    status,
)

from ecp3_api.models.extra_models import TokenModel  # noqa: F401
from ecp3_api.models.error import Error
from ecp3_api.models.overview import Overview
from ecp3_api.models.plug import Plug
from ecp3_api.models.plug_dict import PlugDict


router = APIRouter()


@router.get(
    "/Plugs",
    responses={
        200: {"model": PlugDict, "description": "Dict with plugs"},
    },
    tags=["default"],
    response_model_by_alias=True,
)
async def plugs_get(
) -> PlugDict:
    """Returns a dict with all the plugs and their values"""
    ...


@router.get(
    "/Plugs/{plugname}/{attribute}",
    responses={
        200: {"model": object, "description": "Successfuly retrieved plug attribute"},
        404: {"model": Error, "description": "Subattribute was not found"},
    },
    tags=["default"],
    response_model_by_alias=True,
)
async def plugs_plugname_attribute_get(
    plugname: str
 = Path(..., description="")
,
    attribute: str
 = Path(..., description="")
,
) -> object:
    """Get information about one plug&#39;s attribute"""
    ...


@router.post(
    "/Plugs/{plugname}/{attribute}",
    responses={
        405: {"description": "Setting Values is not yet supported"},
    },
    tags=["default"],
    response_model_by_alias=True,
)
async def plugs_plugname_attribute_post(
    plugname: str
 = Path(..., description="")
,
    attribute: str
 = Path(..., description="")
,
) -> None:
    ...


@router.get(
    "/Plugs/{plugname}/{attribute}/{subattribute}",
    responses={
        200: {"model": object, "description": "Successfuly retrieved plug attribute"},
        404: {"model": Error, "description": "Subattribute was not found"},
    },
    tags=["default"],
    response_model_by_alias=True,
)
async def plugs_plugname_attribute_subattribute_get(
    plugname: str
 = Path(..., description="")
,
    attribute: str
 = Path(..., description="")
,
    subattribute: str
 = Path(..., description="")
,
) -> object:
    """Get information about one plug&#39;s attribute&#39;s attribute"""
    ...


@router.post(
    "/Plugs/{plugname}/{attribute}/{subattribute}",
    responses={
        405: {"description": "Setting Values is not yet supported"},
    },
    tags=["default"],
    response_model_by_alias=True,
)
async def plugs_plugname_attribute_subattribute_post(
    plugname: str
 = Path(..., description="")
,
    attribute: str
 = Path(..., description="")
,
    subattribute: str
 = Path(..., description="")
,
) -> None:
    ...


@router.get(
    "/Plugs/{plugname}",
    responses={
        200: {"model": Plug, "description": "Plug Values"},
        404: {"model": Error, "description": "Subattribute was not found"},
    },
    tags=["default"],
    response_model_by_alias=True,
)
async def plugs_plugname_get(
    plugname: str
 = Path(..., description="")
,
) -> Plug:
    """Returns a dict with all plugvalues for one specific plug"""
    ...


@router.post(
    "/Plugs",
    responses={
        405: {"description": "Setting Values is not yet supported"},
    },
    tags=["default"],
    response_model_by_alias=True,
)
async def plugs_post(
) -> None:
    ...


@router.get(
    "/",
    responses={
        200: {"model": Overview, "description": "All available information"},
    },
    tags=["default"],
    response_model_by_alias=True,
)
async def root_get(
) -> Overview:
    ...
