Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v9.5.1 #4689

Merged
merged 8 commits into from
Nov 1, 2024
Next Next commit
check media for gifs; update error check for tenor
  • Loading branch information
kabeaty committed Oct 9, 2024
commit 2b47280bf0554b3dedca979b8622851e881dcacb
8 changes: 4 additions & 4 deletions server/src/core/server/app/handlers/api/tenor/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,15 +69,15 @@ export const tenorSearchHandler =
return;
}

const gifsEnabled = tenant.media?.gifs.enabled ?? false;
const gifsEnabled = tenant.media?.gifs?.enabled ?? false;
if (!gifsEnabled) {
res.status(200).send({
results: [],
});
return;
}

const apiKey = tenant.media?.gifs.key ?? null;
const apiKey = tenant.media?.gifs?.key ?? null;
if (!apiKey || apiKey.length === 0) {
res.status(200).send({
results: [],
Expand All @@ -86,7 +86,7 @@ export const tenorSearchHandler =
}

const contentFilter = convertGiphyContentRatingToTenorLevel(
tenant.media?.gifs.maxRating
tenant.media?.gifs?.maxRating
);

const url = new URL(TENOR_SEARCH_URL);
Expand Down Expand Up @@ -133,7 +133,7 @@ export const tenorSearchHandler =
} catch (e) {
// Ensure that the API key doesn't get leaked to the logs by accident.
if (e.message) {
e.message = e.message.replace(tenant.media?.gifs.key, "[Sensitive]");
e.message = e.message.replace(tenant.media?.gifs?.key, "[Sensitive]");
}
throw new WrappedInternalError(e as Error, "tenor search error");
}
Expand Down
4 changes: 2 additions & 2 deletions server/src/core/server/models/tenant/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,13 +119,13 @@ export function supportsMediaType(
return !!tenant.media?.youtube.enabled;
case "giphy":
return (
!!tenant.media?.gifs.enabled &&
!!tenant.media?.gifs?.enabled &&
!!tenant.media.gifs.key &&
tenant.media.gifs.provider === GQLGIF_MEDIA_SOURCE.GIPHY
);
case "tenor":
return (
!!tenant.media?.gifs.enabled &&
!!tenant.media?.gifs?.enabled &&
!!tenant.media.gifs.key &&
tenant.media.gifs.provider === GQLGIF_MEDIA_SOURCE.TENOR
);
Expand Down
3 changes: 3 additions & 0 deletions server/src/core/server/services/comments/media.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@ async function attachTenorMedia(
video: data.media_formats.mp4.url,
};
} catch (err) {
if (!(err instanceof Error)) {
throw new Error("cannot attach Tenor Media");
}
throw new WrappedInternalError(err as Error, "cannot attach Tenor Media");
}
}
Expand Down
10 changes: 5 additions & 5 deletions server/src/core/server/services/giphy/giphy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ const GiphyRetrieveResponseSchema = Joi.object().keys({

export function ratingIsAllowed(rating: string, tenant: Tenant) {
const compareRating = rating.toLowerCase();
const maxRating = tenant.media?.gifs.maxRating || "g";
const maxRating = tenant.media?.gifs?.maxRating || "g";

const compareIndex = RATINGS_ORDER.indexOf(compareRating);
const maxIndex = RATINGS_ORDER.indexOf(maxRating);
Expand Down Expand Up @@ -98,7 +98,7 @@ export async function searchGiphy(
offset: string,
tenant: Tenant
): Promise<GiphyGifSearchResponse> {
if (!supportsMediaType(tenant, "giphy") || !tenant.media.gifs.key) {
if (!supportsMediaType(tenant, "giphy") || !tenant.media?.gifs?.key) {
throw new InternalError("Giphy was not enabled");
}

Expand Down Expand Up @@ -137,12 +137,12 @@ export async function retrieveFromGiphy(
tenant: Tenant,
id: string
): Promise<GiphyGifRetrieveResponse> {
if (!supportsMediaType(tenant, "giphy") || !tenant.media.gifs.key) {
if (!supportsMediaType(tenant, "giphy") || !tenant.media?.gifs?.key) {
throw new InternalError("Giphy was not enabled");
}

const url = new URL(`${GIPHY_FETCH}/${id}`);
url.searchParams.set("api_key", tenant.media.gifs.key);
url.searchParams.set("api_key", tenant.media?.gifs?.key);

try {
const res = await fetch(url.toString());
Expand All @@ -158,7 +158,7 @@ export async function retrieveFromGiphy(
} catch (err) {
// Ensure that the API key doesn't get leaked to the logs by accident.
if (err.message) {
err.message = err.message.replace(tenant.media.gifs.key, "[Sensitive]");
err.message = err.message.replace(tenant.media?.gifs?.key, "[Sensitive]");
}

// Rethrow the error.
Expand Down
2 changes: 1 addition & 1 deletion server/src/core/server/services/tenor/tenor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export async function retrieveFromTenor(
tenant: Tenant,
id: string
): Promise<FetchPayload> {
if (!supportsMediaType(tenant, "tenor") || !tenant.media.gifs.key) {
if (!supportsMediaType(tenant, "tenor") || !tenant.media?.gifs?.key) {
throw new InternalError("Tenor was not enabled");
}

Expand Down