svt init
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
target/
|
||||
Cargo.lock
|
||||
log/
|
||||
.env
|
||||
@@ -0,0 +1,13 @@
|
||||
[package]
|
||||
name = "mnml_svt"
|
||||
version = "0.1.0"
|
||||
authors = ["ntr <ntr@mnml.gg>"]
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
ws = "0.8"
|
||||
reqwest = "0.9"
|
||||
rand = "0.6"
|
||||
url = "1"
|
||||
cookie = "0.12"
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
extern crate reqwest;
|
||||
extern crate rand;
|
||||
extern crate ws;
|
||||
|
||||
use std::thread;
|
||||
|
||||
use rand::distributions::Alphanumeric;
|
||||
use rand::{thread_rng, Rng};
|
||||
use reqwest::header;
|
||||
use std::iter;
|
||||
use ws::{connect, CloseCode, Message, Handler, Sender, Result, Request, Response};
|
||||
|
||||
struct Bot {
|
||||
out: Sender,
|
||||
token: String,
|
||||
}
|
||||
|
||||
impl Handler for Bot {
|
||||
fn build_request(&mut self, url: &url::Url) -> Result<Request> {
|
||||
let mut req = Request::from_url(url)?;
|
||||
|
||||
let headers = req.headers_mut();
|
||||
headers.push(("x-auth-token".to_string(), Vec::from(self.token.clone())));
|
||||
|
||||
Ok(req)
|
||||
}
|
||||
|
||||
fn on_open(&mut self, _: ws::Handshake) -> ws::Result<()> {
|
||||
println!("websocket connected");
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut rng = thread_rng();
|
||||
|
||||
let name: String = iter::repeat(()).map(|()| rng.sample(Alphanumeric)).take(12).collect();
|
||||
let password: String = iter::repeat(()).map(|()| rng.sample(Alphanumeric)).take(12).collect();
|
||||
|
||||
let mut headers = header::HeaderMap::new();
|
||||
headers.insert(header::CONTENT_TYPE, header::HeaderValue::from_static("application/json"));
|
||||
|
||||
let client = reqwest::Client::builder()
|
||||
.cookie_store(true)
|
||||
.default_headers(headers)
|
||||
.build()
|
||||
.unwrap();
|
||||
|
||||
let register_body = format!("{{ \"name\": {:?}, \"password\": {:?}, \"code\": \"grep842\" }}", name, password);
|
||||
println!("{:?}", register_body);
|
||||
let account = client.post("http://localhost/api/account/register")
|
||||
.body(register_body)
|
||||
.send()
|
||||
.unwrap();
|
||||
|
||||
println!("{:?}", account.headers().get("set-cookie"));
|
||||
|
||||
// Client thread
|
||||
let client = thread::Builder::new().name(name).spawn(move || {
|
||||
connect("ws://localhost/api/ws", |out| {
|
||||
|
||||
let token_cookie = account.cookies()
|
||||
.find(|c| c.name() == "x-auth-token")
|
||||
.unwrap();
|
||||
|
||||
Bot {
|
||||
out: out,
|
||||
token: token_cookie.value().to_string(),
|
||||
}
|
||||
}).unwrap()
|
||||
}).unwrap();
|
||||
|
||||
client.join().unwrap()
|
||||
}
|
||||
Reference in New Issue
Block a user