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