Removed imgur support
ci/woodpecker/push/woodpecker Pipeline was successful Details
ci/woodpecker/tag/woodpecker Pipeline was successful Details

main latest
Joey Hines 2023-12-08 20:15:32 -07:00
parent 6dd12fd561
commit 34cb744091
Signed by: joeyahines
GPG Key ID: 995E531F7A569DDB
9 changed files with 7 additions and 100 deletions

2
Cargo.lock generated
View File

@ -2348,7 +2348,7 @@ dependencies = [
[[package]]
name = "woxlf"
version = "0.3.0"
version = "0.3.1"
dependencies = [
"bitflags",
"chrono",

View File

@ -1,6 +1,6 @@
[package]
name = "woxlf"
version = "0.3.0"
version = "0.3.1"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

View File

@ -20,7 +20,7 @@ pub struct GameConfig {
pub vote_phase_name: String,
pub enemy_phase_name: String,
pub player_group_name: String,
pub profile_album_hash: String,
pub profile_album: Vec<String>,
pub whispers_allowed: bool,
pub roles: Vec<Role>,
pub first_name: Vec<String>,

View File

@ -11,7 +11,6 @@ use crate::game::game_state::PhaseDuration;
use crate::game::global_data::GlobalData;
use crate::game::player_data::PlayerData;
use crate::game::role::Role;
use crate::imgur::Image;
#[allow(clippy::too_many_arguments)]
pub async fn add_user_to_game(
@ -21,7 +20,7 @@ pub async fn add_user_to_game(
discord_user: &Member,
first_name: Option<String>,
last_name: Option<String>,
profile_pic: Option<Image>,
profile_pic: Option<String>,
role: Option<Role>,
) -> error::Result<PlayerData> {
if first_name.is_none() && last_name.is_none() {
@ -72,7 +71,7 @@ pub async fn add_user_to_game(
vote_target: None,
codename,
channel_webhook_id: webhook.id.0,
profile_pic_url: profile_pic.unwrap().link,
profile_pic_url: profile_pic.unwrap(),
alive: true,
role: role.unwrap(),
};

View File

@ -83,7 +83,7 @@ async fn start(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult {
first_names.shuffle(&mut thread_rng());
last_names.shuffle(&mut thread_rng());
let mut profile_pics = global_data.get_profile_pic_album().await?;
let mut profile_pics = global_data.game_cfg()?.profile_album.clone();
profile_pics.shuffle(&mut thread_rng());

View File

@ -1,4 +1,3 @@
use crate::imgur::ImgurError;
use serenity::prelude::SerenityError;
use std::fmt::{Display, Formatter};
use tera::Error;
@ -15,7 +14,6 @@ pub enum WoxlfError {
DiscordIdParseError(String),
GameNotInProgress,
HostWebhookError,
ImgurError(ImgurError),
RanOutOfCodenames,
TemplateError(tera::Error),
RanOutOfProfilePics,
@ -38,7 +36,6 @@ impl Display for WoxlfError {
WoxlfError::DiscordIdParseError(e) => format!("Unable to parse player id {}", e),
WoxlfError::GameNotInProgress => "A game is not currently in progress".to_string(),
WoxlfError::HostWebhookError => "Unable to communicate to the host webhook".to_string(),
WoxlfError::ImgurError(err) => format!("Imgur module error: {}", err),
WoxlfError::RanOutOfCodenames => {
"Ran out of codename combinations, add more first/last names to the config"
.to_string()
@ -81,12 +78,6 @@ impl From<toml::ser::Error> for WoxlfError {
}
}
impl From<ImgurError> for WoxlfError {
fn from(err: ImgurError) -> Self {
Self::ImgurError(err)
}
}
impl From<tera::Error> for WoxlfError {
fn from(err: Error) -> Self {
Self::TemplateError(err)

View File

@ -9,7 +9,6 @@ use crate::config::{BotConfig, GameConfig};
use crate::error::{Result, WoxlfError};
use crate::game::game_state::GameState;
use crate::game::Phase;
use crate::imgur::{get_album_images, Image};
use crate::messages::MessageTemplates;
#[derive(Debug, Clone)]
@ -129,14 +128,6 @@ impl GlobalData {
Ok(())
}
pub async fn get_profile_pic_album(&self) -> Result<Vec<Image>> {
Ok(get_album_images(
&self.cfg.imgur_client_id,
&self.game_cfg()?.profile_album_hash,
)
.await?)
}
pub fn get_phase_name(&self) -> Result<String> {
let game_cfg = self.game_cfg()?;
let state = self.game_state()?;

View File

@ -1,73 +0,0 @@
use reqwest::Client;
use serde::{Deserialize, Serialize};
use std::fmt::{Display, Formatter};
#[derive(Debug)]
pub enum ImgurError {
ReqwestError(reqwest::Error),
ImgurRequestError(String),
}
impl From<reqwest::Error> for ImgurError {
fn from(e: reqwest::Error) -> Self {
Self::ReqwestError(e)
}
}
impl Display for ImgurError {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
let msg = match self {
ImgurError::ReqwestError(err) => format!("Reqwest error: {}", err),
ImgurError::ImgurRequestError(msg) => format!("Imgur request error: {}", msg),
};
write!(f, "{}", msg)
}
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct AlbumData {
images: Option<Vec<Image>>,
error: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct AlbumResponse {
data: AlbumData,
success: bool,
status: i32,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Image {
pub id: String,
pub title: Option<String>,
pub description: Option<String>,
#[serde(rename = "type")]
pub img_type: String,
pub animated: bool,
pub width: i32,
pub height: i32,
pub size: i32,
pub link: String,
}
pub async fn get_album_images(client_id: &str, album_hash: &str) -> Result<Vec<Image>, ImgurError> {
let client = Client::new();
let res = client
.get(format!("https://api.imgur.com/3/album/{}", album_hash))
.header("Authorization", format!("Client-ID {}", client_id))
.send()
.await?;
let album_response: AlbumResponse = res.json().await?;
if album_response.success {
Ok(album_response.data.images.unwrap())
} else {
Err(ImgurError::ImgurRequestError(
album_response.data.error.unwrap(),
))
}
}

View File

@ -15,9 +15,8 @@ mod config;
mod discord;
mod error;
mod game;
mod imgur;
mod messages;
mod messages;
#[tokio::main]
async fn main() {
let args: Args = Args::from_args();