fix(services/january): remove image if video present and hence fix logic error

refactor(services/january): throw an error if embed fails to generate
This commit is contained in:
Paul Makles
2024-10-02 16:08:24 +01:00
parent 520fb02fb6
commit 58d3c5cc2e
5 changed files with 16 additions and 3 deletions

View File

@@ -1,6 +1,7 @@
use axum::{extract::Query, response::IntoResponse, routing::get, Json, Router};
use reqwest::header;
use revolt_result::Result;
use revolt_models::v0::Embed;
use revolt_result::{create_error, Result};
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
@@ -87,5 +88,9 @@ async fn embed(
Query(UrlQuery { url }): Query<UrlQuery>,
// TypedHeader(Authorization(_bearer)): TypedHeader<Authorization<Bearer>>,
) -> Result<impl IntoResponse> {
Request::generate_embed(url).await.map(Json)
match Request::generate_embed(url).await {
Ok(Embed::None) => Err(create_error!(NoEmbedData)),
result => result,
}
.map(Json)
}

View File

@@ -156,8 +156,13 @@ pub async fn create_website_embed(original_url: &str, document: &str) -> Option<
}
}
// remove image if video exists
if metadata.video.is_some() {
metadata.image.take();
}
// fetch image size if missing
if metadata.special.is_none() && metadata.image.is_none() {
if metadata.special.is_none() {
if let Some(Image {
width, height, url, ..
}) = &metadata.image