add config
This commit is contained in:
parent
aed7773a61
commit
a2dd0a6008
@ -7,3 +7,4 @@ edition = "2021"
|
||||
seahorse = "*"
|
||||
reqwest = { version = "*", features = ["blocking", "json"] }
|
||||
tokio = { version = "1", features = ["full"] }
|
||||
shellexpand = "*"
|
||||
|
13
src/data.rs
Normal file
13
src/data.rs
Normal file
@ -0,0 +1,13 @@
|
||||
//use config::{Config, ConfigError, File};
|
||||
//use serde_derive::{Deserialize, Serialize};
|
||||
|
||||
pub fn token_file(s: &str) -> String {
|
||||
let file = "/.config/ai/token";
|
||||
let mut f = shellexpand::tilde("~").to_string();
|
||||
f.push_str(&file);
|
||||
match &*s {
|
||||
"toml" => f + &".toml",
|
||||
"json" => f + &".json",
|
||||
_ => f + &"." + &s,
|
||||
}
|
||||
}
|
@ -1,10 +1,14 @@
|
||||
pub mod refresh;
|
||||
pub mod token;
|
||||
pub mod ascii;
|
||||
pub mod data;
|
||||
|
||||
use seahorse::{App, Command, Context, Flag, FlagType};
|
||||
use std::env;
|
||||
use std::fs;
|
||||
use std::io::Write;
|
||||
use crate::ascii::c_ascii;
|
||||
use crate::data::token_file;
|
||||
|
||||
fn main() {
|
||||
let args: Vec<String> = env::args().collect();
|
||||
@ -59,10 +63,15 @@ fn c_refresh(c: &Context) {
|
||||
|
||||
fn token(c: &Context) {
|
||||
let m = c.args[0].to_string();
|
||||
let f = token_file(&"json");
|
||||
let mut f = fs::File::create(f.clone()).unwrap();
|
||||
|
||||
let h = async {
|
||||
if let Ok(p) = c.string_flag("password") {
|
||||
let str = token::post_request(m.to_string(), p.to_string()).await;
|
||||
println!("{}",str);
|
||||
|
||||
f.write_all(&str.as_bytes()).unwrap();
|
||||
}
|
||||
};
|
||||
let res = tokio::runtime::Runtime::new().unwrap().block_on(h);
|
||||
|
53
src/reply.rs
Normal file
53
src/reply.rs
Normal file
@ -0,0 +1,53 @@
|
||||
extern crate reqwest;
|
||||
use crate::token_toml;
|
||||
use crate::url;
|
||||
use serde_json::json;
|
||||
use iso8601_timestamp::Timestamp;
|
||||
|
||||
pub async fn post_request(text: String, cid: String, uri: String, cid_p: String, uri_p: String) -> String {
|
||||
|
||||
let token = token_toml(&"access");
|
||||
let did = token_toml(&"did");
|
||||
let handle = token_toml(&"handle");
|
||||
|
||||
let url = url(&"record_create");
|
||||
//let url = "https://bsky.social/xrpc/com.atproto.repo.createRecord";
|
||||
let col = "app.bsky.feed.post".to_string();
|
||||
|
||||
let d = Timestamp::now_utc();
|
||||
let d = d.to_string();
|
||||
|
||||
let post = Some(json!({
|
||||
"repo": handle.to_string(),
|
||||
"did": did.to_string(),
|
||||
"collection": col.to_string(),
|
||||
"record": {
|
||||
"text": text.to_string(),
|
||||
"createdAt": d.to_string(),
|
||||
"reply": {
|
||||
"root": {
|
||||
"cid": cid.to_string(),
|
||||
"uri": uri.to_string()
|
||||
},
|
||||
"parent": {
|
||||
"cid": cid_p.to_string(),
|
||||
"uri": uri_p.to_string()
|
||||
}
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
let client = reqwest::Client::new();
|
||||
let res = client
|
||||
.post(url)
|
||||
.json(&post)
|
||||
.header("Authorization", "Bearer ".to_owned() + &token)
|
||||
.send()
|
||||
.await
|
||||
.unwrap()
|
||||
.text()
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
return res
|
||||
}
|
Loading…
Reference in New Issue
Block a user