Implement Commanding (#6)
Reviewed-on: #6 Co-authored-by: Sergey Savelyev <sergeysav.nn@gmail.com> Co-committed-by: Sergey Savelyev <sergeysav.nn@gmail.com>
This commit was merged in pull request #6.
This commit is contained in:
42
server/src/command/error.rs
Normal file
42
server/src/command/error.rs
Normal file
@@ -0,0 +1,42 @@
|
||||
use crate::core::TelemetryDataType;
|
||||
use actix_web::http::StatusCode;
|
||||
use actix_web::ResponseError;
|
||||
use thiserror::Error;
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
pub enum Error {
|
||||
#[error("Command Not Found {0}")]
|
||||
CommandNotFound(String),
|
||||
#[error("Incorrect Number of Parameters Specified. {expected} expected. {actual} found.")]
|
||||
IncorrectParameterCount { expected: usize, actual: usize },
|
||||
#[error("Missing Parameter {0}.")]
|
||||
MisingParameter(String),
|
||||
#[error("Incorrect Parameter Type for {name}. {expected_type:?} expected.")]
|
||||
WrongParameterType {
|
||||
name: String,
|
||||
expected_type: TelemetryDataType,
|
||||
},
|
||||
#[error("No Command Receiver")]
|
||||
NoCommandReceiver,
|
||||
#[error("Failed to Send")]
|
||||
FailedToSend,
|
||||
#[error("Failed to Receive Command Response")]
|
||||
FailedToReceiveResponse,
|
||||
#[error("Command Failure: {0}")]
|
||||
CommandFailure(String),
|
||||
}
|
||||
|
||||
impl ResponseError for Error {
|
||||
fn status_code(&self) -> StatusCode {
|
||||
match *self {
|
||||
Error::CommandNotFound(_) => StatusCode::NOT_FOUND,
|
||||
Error::IncorrectParameterCount { .. } => StatusCode::BAD_REQUEST,
|
||||
Error::MisingParameter(_) => StatusCode::BAD_REQUEST,
|
||||
Error::WrongParameterType { .. } => StatusCode::BAD_REQUEST,
|
||||
Error::NoCommandReceiver => StatusCode::SERVICE_UNAVAILABLE,
|
||||
Error::FailedToSend => StatusCode::INTERNAL_SERVER_ERROR,
|
||||
Error::FailedToReceiveResponse => StatusCode::INTERNAL_SERVER_ERROR,
|
||||
Error::CommandFailure(_) => StatusCode::BAD_REQUEST,
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user