mirror of
https://framagit.org/veretcle/oolatoocs.git
synced 2025-12-06 06:43:15 +01:00
♻️: refactor bsky session
This commit is contained in:
37
src/bsky.rs
37
src/bsky.rs
@@ -3,11 +3,15 @@ use atrium_api::{
|
||||
app::bsky::feed::post::RecordData, com::atproto::repo::upload_blob::Output,
|
||||
types::string::Datetime, types::string::Language,
|
||||
};
|
||||
use bsky_sdk::{rich_text::RichText, BskyAgent};
|
||||
use bsky_sdk::{
|
||||
agent::config::{Config, FileStore},
|
||||
rich_text::RichText,
|
||||
BskyAgent,
|
||||
};
|
||||
use log::error;
|
||||
use megalodon::entities::attachment::{Attachment, AttachmentType};
|
||||
use regex::Regex;
|
||||
use std::error::Error;
|
||||
use std::{error::Error, fs::exists};
|
||||
|
||||
/// Intermediary struct to deal with replies more easily
|
||||
#[derive(Debug)]
|
||||
@@ -16,6 +20,34 @@ pub struct BskyReply {
|
||||
pub root_record_uri: String,
|
||||
}
|
||||
|
||||
pub async fn get_session(config: &BlueskyConfig) -> Result<BskyAgent, Box<dyn Error>> {
|
||||
if exists(&config.config_path)? {
|
||||
let bluesky = BskyAgent::builder()
|
||||
.config(Config::load(&FileStore::new(&config.config_path)).await?)
|
||||
.build()
|
||||
.await?;
|
||||
|
||||
if bluesky.api.com.atproto.server.get_session().await.is_ok() {
|
||||
bluesky
|
||||
.to_config()
|
||||
.await
|
||||
.save(&FileStore::new(&config.config_path))
|
||||
.await?;
|
||||
return Ok(bluesky);
|
||||
}
|
||||
}
|
||||
|
||||
let bluesky = BskyAgent::builder().build().await?;
|
||||
bluesky.login(&config.handle, &config.password).await?;
|
||||
bluesky
|
||||
.to_config()
|
||||
.await
|
||||
.save(&FileStore::new(&config.config_path))
|
||||
.await?;
|
||||
|
||||
Ok(bluesky)
|
||||
}
|
||||
|
||||
pub async fn build_post_record(
|
||||
config: &BlueskyConfig,
|
||||
text: &str,
|
||||
@@ -196,6 +228,7 @@ mod tests {
|
||||
let bsky_conf = BlueskyConfig {
|
||||
handle: "tamerelol.bsky.social".to_string(),
|
||||
password: "dtc".to_string(),
|
||||
config_path: "nope".to_string(),
|
||||
};
|
||||
|
||||
let created_record_data = build_post_record(&bsky_conf, text, &None, None, &None)
|
||||
|
||||
Reference in New Issue
Block a user