First commit | 1.0.0 | Stable

This commit is contained in:
Max Chaev 2025-03-12 20:48:14 +03:00
commit 542fc634ad
8 changed files with 1574 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

1438
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

10
Cargo.toml Normal file
View File

@ -0,0 +1,10 @@
[package]
name = "cctweaked-messager"
version = "0.1.0"
edition = "2024"
[dependencies]
reqwest = { version = "0.11", features = ["blocking"] }
serde = { version = "1.0.219", features = ["derive"] }
serde_json = "1.0.140"
strum = { version = "0.27.1", features = ["derive"] }

72
src/cli.rs Normal file
View File

@ -0,0 +1,72 @@
use std::{env, process::exit};
use strum::{EnumIter, IntoEnumIterator};
use crate::{decoding::{decode_json, CctweakedMessage}, networking::{get_json, send_json}};
#[derive(Debug, EnumIter)]
enum KnownArguments {
Help,
Send,
Recieve,
Wrong,
}
const URL: &str = "https://dixxe.top/cctweaked-beta";
fn gratefull_exit() {
println!("Please provide correct arguments or look at --help");
exit(0)
}
pub fn process_cli_args() {
let args: Vec<_> = env::args().collect();
if args.len() < 2 {
gratefull_exit();
}
// Removing execution path probably.
let args = &args[1..];
let arg_type = match args[0].as_str() {
"help" => KnownArguments::Help,
"--help" => KnownArguments::Help,
"-h" => KnownArguments::Help,
"send" => KnownArguments::Send,
"recieve" => KnownArguments::Recieve,
_ => KnownArguments::Wrong,
};
match arg_type {
KnownArguments::Help => process_help(args),
KnownArguments::Send => process_send(args),
KnownArguments::Recieve => process_recieve(args),
KnownArguments::Wrong => gratefull_exit(),
};
}
fn process_help(_: &[String]) {
println!("All posible arguments:");
for argument in KnownArguments::iter() {
println!("{:?}", argument);
}
}
fn process_send(args: &[String]) {
let inputed_json: CctweakedMessage = serde_json::from_str(&args[1])
.expect("Wrong CCTweaked Message. Try to encapsulate it in '' ");
let resp = send_json(URL.to_owned(), inputed_json)
.expect("Failed to send json");
println!("{}, {}", resp.status(), resp.text().unwrap());
}
fn process_recieve(_: &[String]) {
let resp = get_json(URL.to_owned())
.expect("Expected a value, got error.");
println!("{:#?}", decode_json(resp));
}

19
src/decoding.rs Normal file
View File

@ -0,0 +1,19 @@
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
pub struct CctweakedMessage {
content: String,
msg_type: i32
}
pub fn create_cctweaked_message(content: String, msg_type: i32) -> CctweakedMessage {
CctweakedMessage {
content,
msg_type
}
}
pub fn decode_json(json: String) -> CctweakedMessage {
serde_json::from_str(&json)
.expect("Failed to read json")
}

3
src/lib.rs Normal file
View File

@ -0,0 +1,3 @@
pub mod decoding;
pub mod cli;
pub mod networking;

8
src/main.rs Normal file
View File

@ -0,0 +1,8 @@
use cctweaked_messager::cli::process_cli_args;
fn main() {
process_cli_args();
}

23
src/networking.rs Normal file
View File

@ -0,0 +1,23 @@
use reqwest::{blocking::{Client, Response}, Error, StatusCode};
use crate::decoding::CctweakedMessage;
pub fn get_json(url: String) -> Result<String, StatusCode> {
let resp = reqwest::blocking::get(url)
.expect("Failed to get json");
let status = resp.status();
match resp.text() {
Ok(body) => Ok(String::from(body.trim().replace("\\", ""))),
_ => Err(status)
}
}
pub fn send_json(url: String, message: CctweakedMessage) -> Result<Response, Error> {
let client = Client::new();
let resp = client.post(url)
.body(serde_json::to_string(&message).expect("Failed to create json from message"))
.send();
resp
}