diff --git a/json-api/src/channels.rs b/json-api/src/channels.rs
index 2b4f9e5..0236e43 100644
--- a/json-api/src/channels.rs
+++ b/json-api/src/channels.rs
@@ -42,51 +42,34 @@ pub async fn create_channel(pool: &Pool, response: &mut Response
, params:
*/
// Theres an extra un-needed unwrap to be cut out from this proc
// specifically with the desc parameter
+ use db::Response::*;
- let name = params.get("name"); // str
-
- let description = if let Some(dval) = params.get("description") { // &str
- dval
- } else {
- "No description"
+ let name = params.get("name");
+ let kind = qs_param!(params, "type", i32);
+ let description = match params.get("description") {
+ Some(d) => d,
+ None => "No description"
};
- let kind = match params.get("kind") { // 1 for vc 2 for text
- Some(value) => {
- let v = value;
- if let Ok(kval) = v.to_string().parse::() {
- Some(kval)
- } else {
- None
- }
- },
- None => None
- };
+ *response.status_mut() = if name.is_some() && kind.is_some() {
+ let (name, kind) = (name.unwrap(), kind.unwrap());
- match (name, kind) {
- (Some(name), Some(kind)) => {
- use db::channels::{TEXT_CHANNEL, VOICE_CHANNEL};
- if (kind == VOICE_CHANNEL) ^ (kind == TEXT_CHANNEL) {
- let db_resp = Channel::new(pool, name, description, kind).await;
- use db::Response::*;
- match db_resp {
- Row(channel) => set_json_body(response, json!(channel)),
- RestrictedInput(msg) => {
- eprintln!("{}", msg);
- *response.status_mut() = StatusCode::BAD_REQUEST;
- },
- Empty => *response.status_mut() = StatusCode::NOT_FOUND,
- Other(msg) => {
- *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR;
- eprintln!("\t[ Channels ] {}", msg);
- },
- _ => *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR // ngmi
- };
- } else {
- *response.status_mut() = StatusCode::BAD_REQUEST; // restriciting to 1|2 for valid channel kinds
+ if let Ok(resp) = Channel::add(pool, name, description, kind).await {
+ match resp {
+ Row(channel) => {
+ set_json_body(response, json!(channel));
+ StatusCode::OK
+ },
+
+ RestrictedInput(_) => StatusCode::UNPROCESSABLE_ENTITY,
+ Other(_) => StatusCode::INTERNAL_SERVER_ERROR,
+ _ => StatusCode::INTERNAL_SERVER_ERROR
}
+ } else {
+ StatusCode::INTERNAL_SERVER_ERROR
}
- _ => *response.status_mut() = StatusCode::BAD_REQUEST
+ } else {
+ StatusCode::BAD_REQUEST
}
}