This repo was created to provide a front end team access to information to create a website that allows users to find recipes and learning materials based on a country they choose. Or, if the user is feeling whimsical, allowing a random country to be chosen for them.
- Learning Goals
- API Key Sign-Up Instructions
- Developer Setup
- Tech & Tools Used
- Database Schema
- Endpoints
- Expose an API that aggregates data from multiple external APIs
- Expose an API that requires an authentication token
- Expose an API for CRUD functionality
- Determine completion criteria based on the needs of other developers
- Test both API consumption and exposure, making use of at least one mocking tool (VCR, Webmock, etc).
You will need to sign up for the following API keys in order to use this repo:
- YouTube API Key: Documentation
- Unsplash API Key: Documentation
- Edamam API Key: Documentation
If you would like to demo this API on your local machine:
- Ensure you have Ruby 2.7.4 and Rails 5.2.8 installed
- Fork and clone down this repo and navigate to the root folder
cd lunch_and_learn
- Run
bundle install
- Run
bundle exec figaro install
- Run
rails db:{drop,create,migrate,seed}
- In your
application.yml
file: - (Optional) To run the test suite, run
bundle exec rspec spec
- Run
rails s
- - assign your Unsplash api key to a variable (this will need to be passed in as query params with key
unsplash_api_key
)- - assign your YouTube/Google api key to a variable (this will need to be passed in as query params with key
google_api_key
)- - assign your Edamam api key to a variable (this will need to be passed in as query params with key
edamam_recipe_api_key
)Default host is http://localhost:3000
- Get Recipes for A Specified Country
- Example Response:
- Get Learning Resources For a Specified Country
- Example Response:
- User Registration
- Example Response:
- Add a Favorite To a User
- Example Response:
- Get a Users Favorites
- Example Response:
GET /api/v1/recipes?country=ireland
{
"data": [
{
"id": null,
"type": "recipe",
"attributes": {
"title": "East of Ireland Recipe",
"url": "http://www.edamam.com/recipe/east-of-ireland-recipe-6d13b3f170ff1927fae509941714f13a/ireland",
"image_url": "https://edamam-product-images.s3.amazonaws.com/web-img/a63/a631e7080e6b18bdea4e4ddab4523984.jpg?X-Amz-Security-Token=IQoJb3JpZ2luX2VjEMr%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJHMEUCIHUYRP7LLtE0VkCKrQcEwMFSMFNLMA2y6XckpR7zspunAiEAgcJTplJpjIg25eC5gNZctQ96PH8OxEPPrSUXf4Y2H6cqzAQIMxAAGgwxODcwMTcxNTA5ODYiDDR5crZtGf3MdnWRxiqpBHXYKNb5uVR%2B7NDptTsi9PmcvoCms6mZ9OL7lpgzhoHHVn6s9mjczJaAjV7Lx2GnmQ%2FEVpJ4mPLjFEEQPFmi0jR2kAhS5SSYDNFs1ZYKhPaEv0QJOBLsJXqMq%2B%2B1RHSOKvSZP0KgrOIvdLZ1vDNaq7bqVKnNny6euytVhAecQwgRSik%2B%2FbUccJxSsqa5d%2F70uYdaKY2IGPKOUYZUC1a%2FdltHRB5JT97MDYGy8ptyoCpiKl69o%2FZ7z%2F0vP1uYOfby6fcilHbiFkxxSyIWGPqbfgZD8T8Dw8gpvkiiChRvZvovZlCOnz1JhhC6c8dtxHiGAJzIEZa%2BXbZq8ERyL41bBbzGhcsFWShRecroyV4HbMMpl3PFmoRosbLKWS55W4Ucd3aXlediCBM0SnCCIsEkdIA0%2FZ4VrHnuffP%2F9k05cTaxchaH0jCLMia1twgy38TzE0z8fxza8ZyUcuXavdVbtM0AnDjl3rpsYctpXcLR0J8WQ9wWykws0WjtpPSBSsCM6InmebEXabJ7j1107RfufbWF8gsRzHNg8wwJayvmCd%2Bed6rHFtlfeBzcIxDR%2FlEJ5kt2ZldxKyXJ%2BQYV4OJ%2FG67PIE2lAqs0%2BAmYGKO67rk3KturYzpUvr37IQ7w8vgKUeyBiuZi6XGRxk%2FMl1CdxbB8hOanAXhwUyx25kftxM%2B%2F%2B2EpaAzR4Gf74XZIdoWzqhkoeakd4CJtfBme%2BawTKbSSRCoPuSDKMQ0wsJeWngY6qQGGsGgHdPc%2BBdyGuzCQcc5tLOyIWh33W7FGuyyg42K%2Fj9tyl5nagGubOY0Eg91Mor9ASQ%2FMAjj%2FnSCaxZ%2B2ju86HWdXkeKv%2FLI%2FvwmYnS%2FxKhftVxCeYCAjHFQ9Z9R0iTzHeePAWjue14pYH3XA6WK5tQNoHN3ai2mS%2B%2FZijoT6t48WMzZnRlGQBQHWsPg18U0SS6g8RVjwJ9D21HmT3i72fzcEzaudeGVe&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230116T184742Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=ASIASXCYXIIFE436I6PM%2F20230116%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=1be506c07fc64f33b233b6726a7ba66ced069fbaefcf691bde5935fa2625c796",
"country": "Ireland"
}
}
]
}
GET /api/v1/learning_resources?country=ireland
{
"data": {
"id": null,
"type": "learning_resource",
"attributes": {
"country": "laos",
"video": {
"title": "A Super Quick History of Laos",
"youtube_video_id": "uw8hjVqxMXw"
},
"images": [
{
"alt_tag": "standing statue and temples landmark during daytime",
"url": "https://images.unsplash.com/photo-1528181304800-259b08848526?ixid=MnwzNzg2NzV8MHwxfHNlYXJjaHwxfHx0aGFpbGFuZHxlbnwwfHx8fDE2Njc4Njk1NTA&ixlib=rb-4.0.3"
},
{
"alt_tag": "five brown wooden boats",
"url": "https://images.unsplash.com/photo-1552465011-b4e21bf6e79a?ixid=MnwzNzg2NzV8MHwxfHNlYXJjaHwyfHx0aGFpbGFuZHxlbnwwfHx8fDE2Njc4Njk1NTA&ixlib=rb-4.0.3"
},
{
"alt_tag": "orange temples during daytime",
"url": "https://images.unsplash.com/photo-1563492065599-3520f775eeed?ixid=MnwzNzg2NzV8MHwxfHNlYXJjaHwzfHx0aGFpbGFuZHxlbnwwfHx8fDE2Njc4Njk1NTA&ixlib=rb-4.0.3"
},
{...},
{...},
{...},
{etc},
]
}
}
}
POST /api/v1/users
{
"data": {
"id": "6",
"type": "user",
"attributes": {
"name": "Drake",
"email": "[email protected]",
"user_api_key": "ec21d9eb6929c7d79427f5be5bc7a16b"
}
}
}
POST /api/v1/favorites
{
"success": "Favorite added successfully"
}
GET /api/v1/favorites
{
"data": [
{
"id": "1",
"type": "favorite",
"attributes": {
"country": "Ireland",
"recipe_link": "http://www.edamam.com/recipe/cheddar-colcannon-torte-97c47f3162d83a9da30673929bbf8f7a/ireland",
"recipe_title": "Cheddar Colcannon Torte",
"created_at": "2023-01-17T04:28:23.879Z"
}
}
]
}