add config
This commit is contained in:
		@@ -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
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user