url: updateImageScalingParams()

in fronts-client/src/services/recipeQuery.ts [103:186]


						url: updateImageScalingParams(recep.featuredImage.url),
					}
				: undefined,
		};
	} catch (err) {
		console.error(err);
		return recep;
	}
};

const recipeQuery = (baseUrl: string) => {
	const captureErrors = (status: number, content: string, url: string) => {
		const existingContext = Raven.getContext();
		Raven.setUserContext({ ...existingContext, recipeSearchResponse: content });
		Raven.captureMessage(`${url} returned ${status}`);
		Raven.setUserContext(existingContext);
		console.error(content);
	};

	const fetchOne = async (href: string): Promise<Recipe | undefined> => {
		const response = await fetch(`${baseUrl}${href}`);

		switch (response.status) {
			case 200:
				const content = await response.json();
				return setupRecipeThumbnails(content as unknown as Recipe);
			case 404:
			case 403:
				console.warn(
					`Search response returned outdated recipe ${baseUrl}${href}`,
				);
				return undefined;
			default:
				console.error(`Could not retrieve recipe ${href}: ${response.status}`);
				return undefined;
		}
	};

	const fetchAllRecipes = async (
		forRecipes: RecipeSearchTitlesResponse[],
	): Promise<RecipeSearchHit[]> => {
		const results = await Promise.all(
			forRecipes.map((r) =>
				fetchOne(r.href)
					.then((recep) =>
						recep
							? {
									...recep,
									score: r.score,
								}
							: undefined,
					)
					.catch(console.warn),
			),
		);

		return results.filter((r) => !!r) as RecipeSearchHit[];
	};

	const baseUrlForKwType = (kwType: FeastKeywordType) => {
		switch (kwType) {
			case 'celebration':
				return `${baseUrl}/keywords/celebrations`;
			case 'mealType':
				return `${baseUrl}/keywords/meal-types`;
			case 'cuisine':
				return `${baseUrl}/keywords/cuisines`;
			case 'diet':
				return `${baseUrl}/keywords/diet-ids`;
		}
	};

	return {
		chefs: async (params: ChefSearchParams): Promise<ChefSearchResponse> => {
			const args = [
				params.query ? `q=${encodeURIComponent(params.query)}` : undefined,
				params.limit ? `limit=${encodeURIComponent(params.limit)}` : undefined,
			].filter((arg) => !!arg);

			const queryString = args.length > 0 ? '?' + args.join('&') : '';
			const url = `${baseUrl}/keywords/contributors${queryString}`;
			const response = await fetch(url);
			const content = await response.text();
			if (response.status == 200) {