chore: cleanup unused config properties

This commit is contained in:
seth 2024-01-27 23:03:34 -05:00
parent 2acb319821
commit 72e171b960
No known key found for this signature in database
GPG key ID: D31BD0D494BBEE86
6 changed files with 23 additions and 152 deletions

View file

@ -1,15 +1,7 @@
use crate::required_var; use std::str::FromStr;
use color_eyre::eyre::{Context as _, Result};
use log::*; use log::*;
use poise::serenity_prelude::{ApplicationId, ChannelId}; use poise::serenity_prelude::ChannelId;
use url::Url;
#[derive(Debug, Clone)]
pub struct RefractionOAuth2 {
pub redirect_uri: Url,
pub scope: String,
}
#[derive(Debug, Clone, Default)] #[derive(Debug, Clone, Default)]
pub struct RefractionChannels { pub struct RefractionChannels {
@ -18,70 +10,33 @@ pub struct RefractionChannels {
#[derive(Debug, Clone, Default)] #[derive(Debug, Clone, Default)]
pub struct DiscordConfig { pub struct DiscordConfig {
pub client_id: ApplicationId,
pub client_secret: String,
pub bot_token: String,
pub oauth2: RefractionOAuth2,
pub channels: RefractionChannels, pub channels: RefractionChannels,
} }
impl Default for RefractionOAuth2 {
fn default() -> Self {
Self {
scope: "identify connections role_connections.write".to_string(),
redirect_uri: Url::parse("https://google.com").unwrap(),
}
}
}
impl RefractionOAuth2 {
pub fn new_from_env() -> Result<Self> {
let unparsed = format!("{}/oauth2/callback", required_var!("PUBLIC_URI"));
let redirect_uri = Url::parse(&unparsed)?;
debug!("OAuth2 Redirect URI is {redirect_uri}");
Ok(Self {
redirect_uri,
..Default::default()
})
}
}
impl RefractionChannels { impl RefractionChannels {
pub fn new_from_env() -> Result<Self> { pub fn new_from_env() -> Self {
let unparsed = std::env::var("DISCORD_SAY_LOG_CHANNELID"); let say_log_channel_id = Self::get_channel_from_env("DISCORD_SAY_LOG_CHANNELID");
if let Ok(unparsed) = unparsed {
let id = unparsed.parse::<u64>()?;
let channel_id = ChannelId::from(id);
debug!("Log channel is {id}"); if let Some(channel_id) = say_log_channel_id {
Ok(Self { info!("Log channel is {channel_id}");
say_log_channel_id: Some(channel_id),
})
} else { } else {
warn!("DISCORD_SAY_LOG_CHANNELID is empty; this will disable logging in your server."); warn!("DISCORD_SAY_LOG_CHANNELID is empty; this will disable logging in your server.");
Ok(Self {
say_log_channel_id: None,
})
} }
Self { say_log_channel_id }
}
fn get_channel_from_env(var: &str) -> Option<ChannelId> {
std::env::var(var)
.ok()
.and_then(|env_var| ChannelId::from_str(&env_var).ok())
} }
} }
impl DiscordConfig { impl DiscordConfig {
pub fn new_from_env() -> Result<Self> { pub fn new_from_env() -> Self {
let unparsed_client = required_var!("DISCORD_CLIENT_ID").parse::<u64>()?; let channels = RefractionChannels::new_from_env();
let client_id = ApplicationId::from(unparsed_client);
let client_secret = required_var!("DISCORD_CLIENT_SECRET");
let bot_token = required_var!("DISCORD_BOT_TOKEN");
let oauth2 = RefractionOAuth2::new_from_env()?;
let channels = RefractionChannels::new_from_env()?;
Ok(Self { Self { channels }
client_id,
client_secret,
bot_token,
oauth2,
channels,
})
} }
} }

View file

@ -1,65 +0,0 @@
use color_eyre::eyre::{Context as _, Result};
use crate::required_var;
#[derive(Debug, Clone)]
pub struct RefractionRepo {
pub owner: String,
pub repo: String,
pub key: String,
pub name: String,
}
#[derive(Debug, Clone)]
pub struct GithubConfig {
pub token: String,
pub repos: Vec<RefractionRepo>,
pub cache_sec: u16,
pub update_cron_job: String,
}
impl Default for GithubConfig {
fn default() -> Self {
let owner = "PrismLauncher".to_string();
let repos = Vec::<RefractionRepo>::from([
RefractionRepo {
owner: owner.clone(),
repo: "PrismLauncher".to_string(),
key: "launcher".to_string(),
name: "Launcher contributor".to_string(),
},
RefractionRepo {
owner: owner.clone(),
repo: "prismlauncher.org".to_string(),
key: "website".to_string(),
name: "Web developer".to_string(),
},
RefractionRepo {
owner: owner.clone(),
repo: "Translations".to_string(),
key: "translations".to_string(),
name: "Translator".to_string(),
},
]);
Self {
repos,
cache_sec: 3600,
update_cron_job: "0 */10 * * * *".to_string(), // every 10 minutes
token: String::default(),
}
}
}
impl GithubConfig {
pub fn new_from_env() -> Result<Self> {
let token = required_var!("GITHUB_TOKEN");
Ok(Self {
token,
..Default::default()
})
}
}

View file

@ -1,16 +1,9 @@
use color_eyre::eyre::Result;
mod discord; mod discord;
mod github; use discord::DiscordConfig;
pub use discord::*;
pub use github::*;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct Config { pub struct Config {
pub discord: DiscordConfig, pub discord: DiscordConfig,
pub github: GithubConfig,
pub http_port: u16,
pub redis_url: String, pub redis_url: String,
} }
@ -18,22 +11,18 @@ impl Default for Config {
fn default() -> Self { fn default() -> Self {
Self { Self {
discord: DiscordConfig::default(), discord: DiscordConfig::default(),
github: GithubConfig::default(),
http_port: 3000,
redis_url: "redis://localhost:6379".to_string(), redis_url: "redis://localhost:6379".to_string(),
} }
} }
} }
impl Config { impl Config {
pub fn new_from_env() -> Result<Self> { pub fn new_from_env() -> Self {
let discord = DiscordConfig::new_from_env()?; let discord = DiscordConfig::new_from_env();
let github = GithubConfig::new_from_env()?;
Ok(Self { Self {
discord, discord,
github,
..Default::default() ..Default::default()
}) }
} }
} }

View file

@ -41,7 +41,7 @@ pub struct Data {
impl Data { impl Data {
pub fn new() -> Result<Self> { pub fn new() -> Result<Self> {
let config = Config::new_from_env()?; let config = Config::new_from_env();
let storage = Storage::new(&config.redis_url)?; let storage = Storage::new(&config.redis_url)?;
let octocrab = octocrab::instance(); let octocrab = octocrab::instance();

View file

@ -1,6 +0,0 @@
#[macro_export]
macro_rules! required_var {
($name: expr) => {
std::env::var($name).wrap_err_with(|| format!("Couldn't find {} in environment!", $name))?
};
}

View file

@ -1,8 +1,6 @@
use color_eyre::eyre::{eyre, Result}; use color_eyre::eyre::{eyre, Result};
use rand::seq::SliceRandom; use rand::seq::SliceRandom;
#[macro_use]
mod macros;
mod resolve_message; mod resolve_message;
pub use resolve_message::resolve as resolve_message; pub use resolve_message::resolve as resolve_message;