shaken_not_stirred 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ef8bd79a93b648fcd5709aceba7de1edae0c976e
4
+ data.tar.gz: 2c148b1b41cb4c3d045f4a22c69d08f839927718
5
+ SHA512:
6
+ metadata.gz: 64b9d39f4c4230e7b56701ed72b4d6ee9a1de7871c9f0734c6dec462f9e4e371928e39b67657c8282efb5259b1f8404cecec46783b4a3e1faef688c7ff1b3db8
7
+ data.tar.gz: 910e9815d7c5066f0c45e93610d69b7c54b79468631f75b4d1262b84a72c1be5f5989b6291019e787374fb20d19c624263c28d9c7c7a9671390ec3686631324a
@@ -0,0 +1,8 @@
1
+ class Configuration
2
+
3
+ attr_accessor :api_key
4
+
5
+ def initialize
6
+ @api_key = "default_api_key"
7
+ end
8
+ end
@@ -0,0 +1,136 @@
1
+ require "configuration"
2
+ require "httparty"
3
+
4
+ class ShakenNotStirred
5
+ include HTTParty
6
+
7
+ # testing purposes
8
+ # BASE_URL = "http://localhost:3000/api/v1".freeze
9
+ BASE_URL = "https://api-cocktails.herokuapp.com/api/v1".freeze
10
+
11
+ attr_accessor :filters, :resource
12
+
13
+ class << self
14
+ attr_accessor :configuration
15
+ end
16
+
17
+ def self.configure
18
+ self.configuration ||= Configuration.new
19
+
20
+ yield(configuration)
21
+ end
22
+
23
+ def initialize
24
+ @filters = {}
25
+ @resource = "cocktails"
26
+ end
27
+
28
+ def by_name(query)
29
+ apply_filter "name", query
30
+
31
+ self
32
+ end
33
+
34
+ def by_description(query)
35
+ apply_filter "description", query
36
+
37
+ self
38
+ end
39
+
40
+ # "rum" | ["orange", "rum"]
41
+ def by_ingredients(query)
42
+ # "OR" behavior by default
43
+ apply_filter_list "ingredients", query
44
+
45
+ self
46
+ end
47
+
48
+ # "classic" | ["classic", "new_era"]
49
+ def by_categories(query)
50
+ # "OR" behavior by default
51
+ apply_filter_list "categories", query
52
+
53
+ self
54
+ end
55
+
56
+ def by_timing(query)
57
+ apply_filter "timing", query
58
+
59
+ self
60
+ end
61
+
62
+ def by_iba(query)
63
+ apply_filter "iba", query
64
+
65
+ self
66
+ end
67
+
68
+ def by_rating(query)
69
+ apply_filter "rating", query
70
+
71
+ self
72
+ end
73
+
74
+ def by_multiple(query)
75
+ apply_filter "multiple", query
76
+
77
+ self
78
+ end
79
+
80
+ def by_page(page)
81
+ apply_filter "page", page
82
+
83
+ self
84
+ end
85
+
86
+ def by_random(count=1)
87
+ apply_filter "random", count
88
+
89
+ self
90
+ end
91
+
92
+ def categories
93
+ @resource = "categories"
94
+ @results = []
95
+
96
+ self
97
+ end
98
+
99
+ def ingredients
100
+ @resource = "ingredients"
101
+ @results = []
102
+
103
+ self
104
+ end
105
+
106
+ def results
107
+ @results = HTTParty.get(url, headers: headers)
108
+ end
109
+
110
+ def url
111
+ "#{BASE_URL}/#{@resource}?#{get_filters}"
112
+ end
113
+
114
+ private
115
+
116
+ def api_key
117
+ @api_key ||= ShakenNotStirred.configuration.api_key
118
+ end
119
+
120
+ def apply_filter(filter_name, value)
121
+ filters[filter_name] = value
122
+ end
123
+
124
+ def apply_filter_list(filter_name, value)
125
+ # categories[]=classic,new_era
126
+ filters["#{filter_name}[]"] = [value].flatten.join(",")
127
+ end
128
+
129
+ def get_filters
130
+ filters.map { |k,v| "#{k}=#{v}" }.join("&")
131
+ end
132
+
133
+ def headers
134
+ { "Authorization"=>"Token token=\"#{api_key}\"" }
135
+ end
136
+ end
metadata ADDED
@@ -0,0 +1,99 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shaken_not_stirred
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
5
+ platform: ruby
6
+ authors:
7
+ - Juan Roldan
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-06-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.15.7
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.15.7
27
+ - !ruby/object:Gem::Dependency
28
+ name: vcr
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 3.0.3
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '3.0'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 3.0.3
47
+ - !ruby/object:Gem::Dependency
48
+ name: webmock
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '2.3'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 2.3.2
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '2.3'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 2.3.2
67
+ description: Ruby client to interact with Cocktails API - https://juanroldan.com.ar/cocktails-api-landing
68
+ email: juanroldan1989@gmail.com
69
+ executables: []
70
+ extensions: []
71
+ extra_rdoc_files: []
72
+ files:
73
+ - lib/configuration.rb
74
+ - lib/shaken_not_stirred.rb
75
+ homepage: http://rubygems.org/gems/shaken_not_stirred
76
+ licenses:
77
+ - MIT
78
+ metadata: {}
79
+ post_install_message:
80
+ rdoc_options: []
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: 2.3.1
88
+ required_rubygems_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ requirements: []
94
+ rubyforge_project:
95
+ rubygems_version: 2.5.1
96
+ signing_key:
97
+ specification_version: 4
98
+ summary: Shaken Not Stirred
99
+ test_files: []