aboutsummaryrefslogtreecommitdiffstats
path: root/public/projects/angular-small-apps/apps/recipes/src/app/shared/services/recipes.service.ts
blob: a82e019758107b104385bd1704ad08c4ecc4cd40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { Recipes } from '../recipes';

@Injectable({
  providedIn: 'root',
})
export class RecipesService {
  private allRecipesAPI =
    'https://www.themealdb.com/api/json/v1/1/search.php?f=a';
  private recipeByIdAPI =
    'https://www.themealdb.com/api/json/v1/1/lookup.php?i=';
  private recipeByNameAPI =
    'https://www.themealdb.com/api/json/v1/1/search.php?s=';
  private recipeByIngredientAPI =
    'https://www.themealdb.com/api/json/v1/1/filter.php?i=';
  private recipeByCategoryAPI =
    'https://www.themealdb.com/api/json/v1/1/filter.php?c=';

  httpOptions = {
    headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
  };

  constructor(private http: HttpClient) {}

  getAllRecipes(): Observable<Recipes[]> {
    return this.http.get<Recipes[]>(this.allRecipesAPI);
  }

  getRecipeById(id: number): Observable<Recipes[]> {
    return this.http.get<Recipes[]>(this.recipeByIdAPI + id);
  }

  getRecipeByName(name: string): Observable<Recipes[]> {
    return this.http.get<Recipes[]>(this.recipeByNameAPI + name);
  }

  getRecipeByIngredient(ingredient: string): Observable<Recipes[]> {
    return this.http.get<Recipes[]>(this.recipeByIngredientAPI + ingredient);
  }

  getRecipeByCategory(category: string): Observable<Recipes[]> {
    return this.http.get<Recipes[]>(this.recipeByCategoryAPI + category);
  }
}