# © Crown-owned copyright 2024, Defence Science and Technology Laboratory UK from enum import Enum, IntEnum from primaite.simulator.network.protocols.packet import DataPacket class HttpRequestMethod(Enum): """Enum list of HTTP Request methods that can be handled by the simulation.""" GET = "GET" """HTTP GET Method. Requests using GET should only retrieve data.""" HEAD = "HEAD" """Asks for a response identical to a GET request, but without the response body.""" POST = "POST" """Submit an entity to the specified resource, often causing a change in state or side effects on the server.""" PUT = "PUT" """Replace all current representations of the target resource with the request payload.""" DELETE = "DELETE" """Delete the specified resource.""" PATCH = "PATCH" """Apply partial modifications to a resource.""" class HttpStatusCode(IntEnum): """List of available HTTP Statuses.""" OK = 200 """request has succeeded.""" BAD_REQUEST = 400 """Payload cannot be parsed.""" UNAUTHORIZED = 401 """Auth required.""" NOT_FOUND = 404 """Item not found in server.""" METHOD_NOT_ALLOWED = 405 """Method is not supported by server.""" INTERNAL_SERVER_ERROR = 500 """Error on the server side.""" class HttpRequestPacket(DataPacket): """Class that represents an HTTP Request Packet.""" request_method: HttpRequestMethod """The HTTP Request method.""" request_url: str """URL of request.""" class HttpResponsePacket(DataPacket): """Class that reprensents an HTTP Response Packet.""" status_code: HttpStatusCode = None """Status code of the HTTP response."""