ocpi 0.3.5

Unofficial, in progress, OCPI implementation
Documentation
use std::{fmt, str::FromStr};

#[derive(Clone, Copy, Debug, PartialEq, Eq, serde::Deserialize)]
pub enum CommandType {
    CancelReservation,
    ReserveNow,
    StartSession,
    StopSession,
    UnlockConnector,
}

impl fmt::Display for CommandType {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match self {
            Self::CancelReservation => f.write_str("CANCEL_RESERVATION"),
            Self::ReserveNow => f.write_str("RESERVE_NOW"),
            Self::StartSession => f.write_str("START_SESSION"),
            Self::StopSession => f.write_str("STOP_SESSION"),
            Self::UnlockConnector => f.write_str("UNLOCK_CONNECTOR"),
        }
    }
}

impl FromStr for CommandType {
    type Err = String;

    fn from_str(s: &str) -> Result<Self, Self::Err> {
        match s {
            "CANCEL_RESERVATION" => Ok(Self::CancelReservation),
            "RESERVE_NOW" => Ok(Self::ReserveNow),
            "START_SESSION" => Ok(Self::StartSession),
            "STOP_SESSION" => Ok(Self::StopSession),
            "UNLOCK_CONNECTOR" => Ok(Self::UnlockConnector),
            s => Err(format!("invalid CommandType `{}`", s)),
        }
    }
}