changed permision scopes and rebritten some functions to add modulatiry
This commit is contained in:
parent
6e38c18e7f
commit
7fa0eeddf1
|
@ -6,8 +6,9 @@ bio = "Bot who posts images of sleeping girls every 6 hours."
|
|||
[files]
|
||||
urls = "./urls.csv"
|
||||
posted = "./posted.csv"
|
||||
tempfile = ".tmp"
|
||||
tempfile = "/tmp/botimage.png"
|
||||
|
||||
[errors]
|
||||
out_of_images = "@Sugui@awoo.fai.st @MeDueleLaTeta@awoo.fai.st me quedé sin chicas"
|
||||
maintainers = "@Sugui@awoo.fai.st @MeDueleLaTeta@awoo.fai.st"
|
||||
out_of_images = "me quedé sin chicas"
|
||||
retry = 10
|
74
src/main.rs
74
src/main.rs
|
@ -43,6 +43,7 @@ struct Files {
|
|||
|
||||
#[derive(Deserialize)]
|
||||
struct Errors {
|
||||
maintainers: String,
|
||||
out_of_images: String,
|
||||
retry: u8,
|
||||
}
|
||||
|
@ -55,25 +56,9 @@ async fn main() -> DynResult<()> {
|
|||
.verbosity(4) // Debug
|
||||
.timestamp(stderrlog::Timestamp::Second)
|
||||
.init()?;
|
||||
let config: Config = match parse_config(CONFIG_FILENAME) {
|
||||
Ok(config) => config,
|
||||
Err(err) => {
|
||||
log::error!("Config file parsing unsuccesful: {}", err);
|
||||
exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
let mastodon = if let Ok(data) = masto_toml::from_file("mastodon-data.toml") {
|
||||
Mastodon::from(data)
|
||||
} else {
|
||||
match register(&config).await {
|
||||
Ok(account) => account,
|
||||
Err(err) => {
|
||||
log::error!("Api registation unsuccesful: {}", err);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
};
|
||||
let config: Config = get_config();
|
||||
let mastodon = get_account(&config).await;
|
||||
|
||||
match get_next_url(&config) {
|
||||
Ok(url) => match url {
|
||||
|
@ -106,7 +91,16 @@ async fn main() -> DynResult<()> {
|
|||
}
|
||||
None => {
|
||||
let mut retry: u8 = 0;
|
||||
while let Err(err) = post(&mastodon, &config.errors.out_of_images).await {
|
||||
while let Err(err) = post(
|
||||
&mastodon,
|
||||
&format!(
|
||||
"{}{}",
|
||||
&config.errors.maintainers, &config.errors.out_of_images
|
||||
),
|
||||
Visibility::Direct,
|
||||
)
|
||||
.await
|
||||
{
|
||||
log::warn!("Cannot post, retry: {}, {}", retry, err);
|
||||
async_std::task::sleep(Duration::new(1, 0)).await;
|
||||
retry += 1;
|
||||
|
@ -119,7 +113,13 @@ async fn main() -> DynResult<()> {
|
|||
},
|
||||
Err(err) => {
|
||||
log::error!("Cannot get next image: {}", err);
|
||||
match post(&mastodon, &err.to_string()).await {
|
||||
match post(
|
||||
&mastodon,
|
||||
&format!("{}{}", &config.errors.maintainers, &err.to_string()),
|
||||
Visibility::Direct,
|
||||
)
|
||||
.await
|
||||
{
|
||||
Ok(_) => {}
|
||||
Err(err) => {
|
||||
log::error!("Cannot post error message: {}", err);
|
||||
|
@ -131,6 +131,30 @@ async fn main() -> DynResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn get_config() -> Config {
|
||||
match parse_config(CONFIG_FILENAME) {
|
||||
Ok(config) => config,
|
||||
Err(err) => {
|
||||
log::error!("Config file parsing unsuccesful: {}", err);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async fn get_account(config: &Config) -> Mastodon {
|
||||
if let Ok(data) = masto_toml::from_file("mastodon-data.toml") {
|
||||
Mastodon::from(data)
|
||||
} else {
|
||||
match register(config).await {
|
||||
Ok(account) => account,
|
||||
Err(err) => {
|
||||
log::error!("Api registation unsuccesful: {}", err);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Parses the given filename to a config struct
|
||||
fn parse_config(filename: &str) -> DynResult<Config> {
|
||||
let toml_file = std::fs::read_to_string(filename)?; //.expect("No config file, consider getting the original one and modifing it");
|
||||
|
@ -208,14 +232,14 @@ async fn update_bio(account: &Mastodon, config: &Config) -> DynResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
async fn post(account: &Mastodon, msg: &str) -> DynResult<()> {
|
||||
async fn post(account: &Mastodon, msg: &str, visibility: Visibility) -> DynResult<Status> {
|
||||
let status = StatusBuilder::new()
|
||||
.visibility(Visibility::Direct)
|
||||
.visibility(visibility)
|
||||
.status(msg)
|
||||
.build()?; //.expect("Error building error status");
|
||||
account.new_status(status).await?; //.expect("Error posting error status");
|
||||
let post = account.new_status(status).await?; //.expect("Error posting error status");
|
||||
log::info!("Text status posted: {}", msg);
|
||||
Ok(())
|
||||
Ok(post)
|
||||
}
|
||||
|
||||
async fn fetch_url(url: &String, file_name: &String) -> DynResult<()> {
|
||||
|
@ -229,7 +253,7 @@ async fn fetch_url(url: &String, file_name: &String) -> DynResult<()> {
|
|||
async fn register(config: &Config) -> DynResult<Mastodon> {
|
||||
let registration = Registration::new(&config.bot.instance)
|
||||
.client_name(&config.bot.name)
|
||||
.scopes(Scopes::write_all())
|
||||
.scopes(Scopes::all())
|
||||
.build()
|
||||
.await?;
|
||||
let mastodon = cli::authenticate(registration).await?;
|
||||
|
|
Loading…
Reference in New Issue