diff --git a/Gemfile.lock b/Gemfile.lock index 2a18a23..b750a75 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,7 +2,7 @@ PATH remote: . specs: shaken_not_stirred (0.0.7) - httparty (~> 0.15.7) + httparty (>= 0.15.7, < 0.22.0) GEM remote: https://rubygems.org/ @@ -19,9 +19,11 @@ GEM safe_yaml (~> 1.0.0) docile (1.3.2) hashdiff (1.0.1) - httparty (0.15.7) + httparty (0.21.0) + mini_mime (>= 1.0.0) multi_xml (>= 0.5.2) json (2.3.0) + mini_mime (1.1.2) multi_xml (0.6.0) public_suffix (4.0.5) rake (13.0.1) diff --git a/README.md b/README.md index 6487560..6cfb114 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,4 @@ -
+ # ShakenNotStirred [![Gem Version](https://badge.fury.io/rb/shaken_not_stirred.svg)](https://badge.fury.io/rb/shaken_not_stirred) @@ -10,7 +8,7 @@ -Ruby client for [Cocktails API](https://juanroldan.com.ar/cocktails-api-landing) +Ruby client for [Cocktails API](https://cocktailsapi.xyz) @@ -38,7 +36,7 @@ gem "shaken_not_stirred", "~> 0.0.7" ## 1. Usage -All `Free`, `Basic`, `Advanced` and `Premium` plans available [here](https://juanroldan.com.ar/cocktails-api-landing) +All `Free`, `Basic`, `Advanced` and `Premium` plans available [here](https://cocktailsapi.xyz) Once completed this quick [form](https://docs.google.com/forms/d/12Ofvx3wg3fIwiS2u41JAv5CNtIExjenU7KVpqyIwMi8/viewform) the API Key will be sent to you by Juan Roldan (`juanroldan1989@gmail.com`) @@ -61,7 +59,7 @@ filter = ShakenNotStirred.new then call API methods, for instance: -### `Cocktails` endpoint +### `Cocktails` endpoint (Library vs. REST) To fetch cocktails with `ginger` on its name: @@ -69,52 +67,98 @@ To fetch cocktails with `ginger` on its name: filter.by_name("ginger") ``` +```ruby +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?name=ginger" -H "Authorization: Token token=your_api_key" +``` + To fetch cocktails with `amazing` on its description: ```ruby filter.by_description("amazing") ``` +```ruby +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?description=amazing" -H "Authorization: Token token=your_api_key" +``` + To fetch cocktails with `rum` on their ingredients: ```ruby filter.by_ingredients(["rum"]) ``` +```ruby +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?ingredients[]=rum" -H "Authorization: Token token=your_api_key" + +# cocktails with `rum` OR `gin` within their ingredients +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?ingredients[]=rum,gin" -H "Authorization: Token token=your_api_key" + +# cocktails with `tequila` AND `vodka` within their ingredients +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?ingredients_only[]=tequila,vodka" -H "Authorization: Token token=your_api_key" +``` + To fetch cocktails with `classic` on their categories: ```ruby filter.by_categories(["classic"]) ``` +```ruby +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?categories[]=classic" -H "Authorization: Token token=your_api_key" + +# cocktails with `drinks` OR `inventions` within their categories +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?categories[]=drinks,inventions" -H "Authorization: Token token=your_api_key" + +# cocktails with `inventions` AND `brandy` within their categories +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?categories_only[]=inventions,brandy" -H "Authorization: Token token=your_api_key" +``` + To fetch cocktails with `dinner` on their timing: ```ruby filter.by_timing("dinner") ``` +```ruby +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?timing=dinner" -H "Authorization: Token token=your_api_key" +``` + To fetch cocktails that belong to the `International Bartender Association`: ```ruby filter.by_iba("true") +# OR filter.by_iba(true) ``` +```ruby +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?iba=true" -H "Authorization: Token token=your_api_key" +``` + To fetch cocktails that don't belong to the `International Bartender Association`: ```ruby filter.by_iba("false") +# OR filter.by_iba(false) ``` +```ruby +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?iba=false" -H "Authorization: Token token=your_api_key" +``` + To fetch cocktails that contain `ice` on many fields: ```ruby filter.by_multiple("ice") +``` -# fields included are: `name`, `description`, `ingredients`, `categories` & `timing` +```ruby +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?multiple=ice" -H "Authorization: Token token=your_api_key" ``` +PS: fields searched by are: `name`, `description`, `ingredients`, `categories` & `timing`. + To fetch cocktails randomnly: ```ruby @@ -129,6 +173,17 @@ filter.by_random(2) filter.by_random(n) ``` +```ruby +# get a random cocktail on every request +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?random=1" -H "Authorization: Token token=your_api_key" + +# get 2 random cocktails on every request +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?random=2" -H "Authorization: Token token=your_api_key" + +# get N random cocktails on every request +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?random=n" -H "Authorization: Token token=your_api_key" +``` + #### All filters are chainable To fetch cocktails that: @@ -141,8 +196,6 @@ To fetch cocktails that: filter = ShakenNotStirred.new filter.by_categories(["classic"]).by_iba(true).by_ingredients(["rum"]) - -filter.results ``` Once applied all the filters you need, make the API call to get the quotes: @@ -151,6 +204,10 @@ Once applied all the filters you need, make the API call to get the quotes: filter.results ``` +```ruby +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?categories[]=classic&iba=true&ingredients[]=rum" -H "Authorization: Token token=your_api_key" +``` + ### `Categories` endpoint Cocktails API also provides an endpoint with all `categories` available to search by. @@ -163,6 +220,10 @@ filter.categories filter.results ``` +```ruby +$ curl "http://api-cocktails.herokuapp.com/api/v1/categories" -H "Authorization: Token token=your_api_key" +``` + ### `Ingredients` endpoint Cocktails API also provides an endpoint with all `ingredients` available to search by. @@ -175,9 +236,17 @@ filter.ingredients filter.results ``` +```ruby +$ curl "http://api-cocktails.herokuapp.com/api/v1/ingredients" -H "Authorization: Token token=your_api_key" +``` + ### Pagination -Pagination behavior is present in all 3 endpoints: `cocktails`, `categories` and `ingredients`. +Results returned per page: 20. + +Pagination behavior is present in all 3 endpoints + +#### Cocktails ```ruby filter = ShakenNotStirred.new @@ -188,6 +257,13 @@ filter.by_page(2) filter.results ``` +```ruby +$ curl "http://api-cocktails.herokuapp.com/api/v1/cocktails?page=2" -H "Authorization: Token token=your_api_key" +``` + + +#### Categories + ```ruby filter = ShakenNotStirred.new @@ -197,6 +273,12 @@ filter.categories.by_page(4) filter.results ``` +```ruby +$ curl "http://api-cocktails.herokuapp.com/api/v1/categories?page=4" -H "Authorization: Token token=your_api_key" +``` + +#### Ingredients + ```ruby filter = ShakenNotStirred.new @@ -206,6 +288,10 @@ filter.ingredients.by_page(5) filter.results ``` +```ruby +$ curl "http://api-cocktails.herokuapp.com/api/v1/ingredients?page=5" -H "Authorization: Token token=your_api_key" +``` + ## 2. Implementation Setting up this gem to work is really easy. Even more if you use `has_scope` gem: diff --git a/shaken_not_stirred.gemspec b/shaken_not_stirred.gemspec index b4efb29..2fefe2d 100644 --- a/shaken_not_stirred.gemspec +++ b/shaken_not_stirred.gemspec @@ -14,7 +14,7 @@ Gem::Specification.new do |s| s.required_ruby_version = ">= 2.3.1" - s.add_dependency "httparty", "~> 0.15.7" + s.add_dependency "httparty", ">= 0.15.7", "< 0.22.0" s.add_development_dependency "vcr", "~> 3.0", ">= 3.0.3" s.add_development_dependency "webmock", "~> 2.3", ">= 2.3.2"