Comments | 0.1.1 | Stable
Small refactors and comments for clarity
This commit is contained in:
parent
83d71ac2ac
commit
23b28abb8c
26
src/cli.rs
26
src/cli.rs
@ -1,9 +1,14 @@
|
|||||||
|
// Package ships with built-in crate for cli managment of server
|
||||||
|
// It's possible to create other interfaces with use of other crates inside package
|
||||||
|
// This is just an example and for fast usages.
|
||||||
|
|
||||||
use std::{env, process::exit};
|
use std::{env, process::exit};
|
||||||
|
|
||||||
use strum::{EnumIter, IntoEnumIterator};
|
use strum::{EnumIter, IntoEnumIterator};
|
||||||
|
|
||||||
use crate::{decoding::decode_json, networking::{get_json, send_json}};
|
use crate::{decoding::decode_json, networking::{get_json, send_json}};
|
||||||
|
|
||||||
|
// Command which we use for basic processing
|
||||||
#[derive(Debug, EnumIter)]
|
#[derive(Debug, EnumIter)]
|
||||||
enum KnownArguments {
|
enum KnownArguments {
|
||||||
Help,
|
Help,
|
||||||
@ -12,22 +17,25 @@ enum KnownArguments {
|
|||||||
Wrong,
|
Wrong,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RESTfull endpoint.
|
||||||
const URL: &str = "https://dixxe.top/cctweaked-beta";
|
const URL: &str = "https://dixxe.top/cctweaked-beta";
|
||||||
|
|
||||||
fn gratefull_exit() {
|
// Method to disable program in non-panic way :)
|
||||||
println!("Please provide correct arguments or look at --help");
|
fn gracefull_exit(msg: &str) {
|
||||||
|
println!("{msg}");
|
||||||
exit(0)
|
exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn process_cli_args() {
|
pub fn basic_interface() {
|
||||||
let args: Vec<_> = env::args().collect();
|
let args: Vec<_> = env::args().collect();
|
||||||
|
|
||||||
if args.len() < 2 {
|
if args.len() < 2 {
|
||||||
gratefull_exit();
|
gracefull_exit("Please provide correct arguments or look at --help");
|
||||||
}
|
}
|
||||||
// Removing execution path probably.
|
// Removing execution path probably.
|
||||||
let args = &args[1..];
|
let args = &args[1..];
|
||||||
|
|
||||||
|
// Translate input args to enum value...
|
||||||
let arg_type = match args[0].to_lowercase().as_str() {
|
let arg_type = match args[0].to_lowercase().as_str() {
|
||||||
"help" => KnownArguments::Help,
|
"help" => KnownArguments::Help,
|
||||||
"--help" => KnownArguments::Help,
|
"--help" => KnownArguments::Help,
|
||||||
@ -37,16 +45,18 @@ pub fn process_cli_args() {
|
|||||||
_ => KnownArguments::Wrong,
|
_ => KnownArguments::Wrong,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Match for every enum value specific processing method!
|
||||||
match arg_type {
|
match arg_type {
|
||||||
KnownArguments::Help => process_help(args),
|
KnownArguments::Help => process_help(args),
|
||||||
KnownArguments::Send => process_send(args),
|
KnownArguments::Send => process_send(args),
|
||||||
KnownArguments::Recieve => process_recieve(args),
|
KnownArguments::Recieve => process_recieve(args),
|
||||||
KnownArguments::Wrong => gratefull_exit(),
|
KnownArguments::Wrong => gracefull_exit("Please provide correct arguments or look at --help"),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
fn process_help(_: &[String]) {
|
fn process_help(_: &[String]) {
|
||||||
println!("All posible arguments:");
|
println!("All posible arguments:");
|
||||||
|
// Printing fancy compile-time checked help message.
|
||||||
for argument in KnownArguments::iter() {
|
for argument in KnownArguments::iter() {
|
||||||
match argument {
|
match argument {
|
||||||
KnownArguments::Help => println!("{:?} - Shows help message.", argument),
|
KnownArguments::Help => println!("{:?} - Shows help message.", argument),
|
||||||
@ -56,12 +66,13 @@ fn process_help(_: &[String]) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn process_send(args: &[String]) {
|
fn process_send(args: &[String]) {
|
||||||
if args.len() < 3 {
|
if args.len() < 3 {
|
||||||
println!("Not enough arguments for 'send', please refer to --help");
|
gracefull_exit("Not enough arguments for 'send', please refer to --help");
|
||||||
exit(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Variables that will be used to assemble decoding::CctweakedMessage
|
||||||
let input_content = &args[1];
|
let input_content = &args[1];
|
||||||
let input_type = &args[2].parse::<i32>().expect("Wrong message type");
|
let input_type = &args[2].parse::<i32>().expect("Wrong message type");
|
||||||
|
|
||||||
@ -71,6 +82,7 @@ fn process_send(args: &[String]) {
|
|||||||
println!("{}, {}", resp.status(), resp.text().unwrap());
|
println!("{}, {}", resp.status(), resp.text().unwrap());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn process_recieve(_: &[String]) {
|
fn process_recieve(_: &[String]) {
|
||||||
|
|
||||||
let resp = get_json(URL.to_owned())
|
let resp = get_json(URL.to_owned())
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
// Message that used to communicate with server.
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
pub struct CctweakedMessage {
|
pub struct CctweakedMessage {
|
||||||
content: String,
|
content: String,
|
||||||
msg_type: i32
|
msg_type: i32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Simple builder for that message
|
||||||
pub fn create_cctweaked_message(content: String, msg_type: i32) -> CctweakedMessage {
|
pub fn create_cctweaked_message(content: String, msg_type: i32) -> CctweakedMessage {
|
||||||
CctweakedMessage {
|
CctweakedMessage {
|
||||||
content,
|
content,
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
pub mod decoding;
|
pub mod decoding;
|
||||||
pub mod cli;
|
pub mod cli;
|
||||||
pub mod networking;
|
pub mod networking;
|
||||||
|
|
||||||
|
// Assembling library from different files
|
@ -1,8 +1,7 @@
|
|||||||
use cctweaked_messager::cli::process_cli_args;
|
use cctweaked_messager::cli::basic_interface;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
process_cli_args();
|
basic_interface();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
// Code that handles server data readings. Pretty simple
|
||||||
|
// Just a GET json and POST json functions
|
||||||
|
|
||||||
use reqwest::{blocking::{Client, Response}, Error, StatusCode};
|
use reqwest::{blocking::{Client, Response}, Error, StatusCode};
|
||||||
|
|
||||||
use crate::decoding::create_cctweaked_message;
|
use crate::decoding::create_cctweaked_message;
|
||||||
@ -9,6 +12,7 @@ pub fn get_json(url: String) -> Result<String, StatusCode> {
|
|||||||
let status = resp.status();
|
let status = resp.status();
|
||||||
|
|
||||||
match resp.text() {
|
match resp.text() {
|
||||||
|
// Replacing `\` for desirialization to work
|
||||||
Ok(body) => Ok(String::from(body.trim().replace("\\", ""))),
|
Ok(body) => Ok(String::from(body.trim().replace("\\", ""))),
|
||||||
_ => Err(status)
|
_ => Err(status)
|
||||||
}
|
}
|
||||||
@ -19,6 +23,7 @@ pub fn send_json(url: String, content: String, msg_type: i32) -> Result<Response
|
|||||||
|
|
||||||
let client = Client::new();
|
let client = Client::new();
|
||||||
let resp = client.post(url)
|
let resp = client.post(url)
|
||||||
|
// A bit crazy stuff, but it works.
|
||||||
.body(serde_json::to_string(&message).expect("Failed to create json from message"))
|
.body(serde_json::to_string(&message).expect("Failed to create json from message"))
|
||||||
.send();
|
.send();
|
||||||
resp
|
resp
|
||||||
|
Loading…
x
Reference in New Issue
Block a user