First commit | 1.0.0 | Stable
This commit is contained in:
commit
542fc634ad
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/target
|
1438
Cargo.lock
generated
Normal file
1438
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
10
Cargo.toml
Normal file
10
Cargo.toml
Normal 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
72
src/cli.rs
Normal 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
19
src/decoding.rs
Normal 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
3
src/lib.rs
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
pub mod decoding;
|
||||||
|
pub mod cli;
|
||||||
|
pub mod networking;
|
8
src/main.rs
Normal file
8
src/main.rs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
use cctweaked_messager::cli::process_cli_args;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
process_cli_args();
|
||||||
|
}
|
||||||
|
|
23
src/networking.rs
Normal file
23
src/networking.rs
Normal 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
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user