--- /dev/null
+use serde::{Deserialize, Serialize};
+
+#[derive(Serialize, Deserialize, Debug)]
+pub struct AuthConfig {
+ pub account_id: String,
+ pub username: String,
+ pub instance_url: String,
+ pub instance_domain: String,
+ pub client_id: String,
+ pub client_secret: String,
+ pub user_token: String,
+}
+
+impl AuthConfig {
+ pub fn load() -> Self {
+ let xdg_dirs = xdg::BaseDirectories::with_prefix("mastodonochrome")
+ .unwrap();
+ let authfile = xdg_dirs.get_config_file("auth");
+ let auth = std::fs::read_to_string(authfile).unwrap();
+ let auth: Self = serde_json::from_str(&auth).unwrap();
+ auth
+ }
+}
// use mastodonochrome::types::*;
+use mastodonochrome::auth::AuthConfig;
use std::io::Read;
fn main() {
- let xdg_dirs = xdg::BaseDirectories::with_prefix("mastodonochrome")
- .unwrap();
- let authfile = xdg_dirs.get_config_file("auth");
- let auth = std::fs::read_to_string(authfile).unwrap();
- let auth: serde_json::Value = serde_json::from_str(&auth).unwrap();
- let auth = &auth["user_token"].as_str().unwrap();
+ let auth = AuthConfig::load();
let client = reqwest::blocking::Client::new();
- let mut req = client.get(
- "https://hachyderm.io/api/v1/streaming/user")
- .bearer_auth(auth)
+ let mut req = client.get(auth.instance_url + "/api/v1/streaming/user")
+ .bearer_auth(auth.user_token)
.send().unwrap();
const BUFSIZE: usize = 4096;