singleplatform 0.1.1 → 0.2.2

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.
@@ -1,3 +1,3 @@
1
1
  module Singleplatform
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2.2'
3
3
  end
@@ -0,0 +1,87 @@
1
+ require 'singleplatform'
2
+ require 'webmock/rspec'
3
+ require 'spec_helper'
4
+
5
+ describe 'Singleplatform::Client::Locations' do
6
+
7
+ before do
8
+ @creds = {
9
+ client_id: 'purplespacesuitfrogboots1',
10
+ client_secret: 'yellowsubmarinesresonatewithmeandmybestbros'
11
+ }
12
+ @client = Singleplatform::Client.new(@creds)
13
+ @location = File.open(Dir.pwd + '/spec/support/fixtures/location.json').read
14
+ @updated_since = File.open(Dir.pwd + '/spec/support/fixtures/updated_since.json').read
15
+ end
16
+
17
+ describe ".location" do
18
+ context "when given a valid location id" do
19
+ it "returns data for that location" do
20
+ stub_request(:get, /publishing-api.singleplatform.com/).
21
+ with(headers: {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
22
+ to_return(status: 200, body: @location)
23
+ response = @client.location('island-prime')
24
+ expect(response).to be_a(Singleplatform::Response)
25
+ expect(response.body.location_id).to eql('island-prime')
26
+ end
27
+ end
28
+
29
+ context "when missing a location id" do
30
+ it "raises an ArgumentError" do
31
+ expect { @client.location }.to raise_error(ArgumentError)
32
+ end
33
+ end
34
+
35
+ context "when including too many params" do
36
+ it "raises an ArgumentError" do
37
+ expect { @client.location('island-prime', 'another-argument') }.to raise_error(ArgumentError)
38
+ end
39
+ end
40
+
41
+ context "when given an invalid location id" do
42
+ it "raises an InvalidLocationError" do
43
+ expect { @client.location('') }.to raise_error(Singleplatform::Error::InvalidLocationError)
44
+ expect { @client.location(' ') }.to raise_error(Singleplatform::Error::InvalidLocationError)
45
+ end
46
+ end
47
+ end
48
+
49
+ describe ".locations_updated_since" do
50
+ context "when given a valid date" do
51
+ it "returns locations updated since that date" do
52
+ stub_request(:get, /publishing-api.singleplatform.com/).
53
+ with(headers: {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
54
+ to_return(status: 200, body: @updated_since)
55
+ response = @client.locations_updated_since('2012-01-01', limit: 3)
56
+ expect(response).to be_a(Singleplatform::Response)
57
+ expect(response.body.results.size).to eql(3)
58
+ end
59
+ end
60
+
61
+ context "when missing a date" do
62
+ it "raises an ArgumentError" do
63
+ expect { @client.locations_updated_since }.to raise_error(ArgumentError
64
+ )
65
+ end
66
+ end
67
+
68
+ context "when given an invalid date" do
69
+ it "raises an InvalidDateError" do
70
+ expect { @client.locations_updated_since(' ') }.to raise_error(Singleplatform::Error::InvalidDateError)
71
+ expect { @client.locations_updated_since('2016') }.to raise_error(Singleplatform::Error::InvalidDateError)
72
+ expect { @client.locations_updated_since('2016-9') }.to raise_error(Singleplatform::Error::InvalidDateError)
73
+ expect { @client.locations_updated_since('2016-9-') }.to raise_error(Singleplatform::Error::InvalidDateError)
74
+ expect { @client.locations_updated_since('2016-9-31') }.to raise_error(Singleplatform::Error::InvalidDateError)
75
+ end
76
+ end
77
+ end
78
+
79
+ describe ".all" do
80
+ context "when given a valid location id" do
81
+ it "returns location info, menus and photos" do
82
+ # TODO
83
+ end
84
+ end
85
+ end
86
+
87
+ end
@@ -0,0 +1,41 @@
1
+ require 'singleplatform'
2
+ require 'webmock/rspec'
3
+
4
+ describe Singleplatform::Client::Menus do
5
+
6
+ before do
7
+ @creds = {
8
+ client_id: 'purplespacesuitfrogboots1',
9
+ client_secret: 'yellowsubmarinesresonatewithmeandmybestbros'
10
+ }
11
+ @client = Singleplatform::Client.new(@creds)
12
+ @menus = File.open(Dir.pwd + '/spec/support/fixtures/menus.json').read
13
+ end
14
+
15
+ describe ".menus_for" do
16
+ context "when given a valid location id" do
17
+ it "returns menu data for that location" do
18
+ stub_request(:get, /publishing-api.singleplatform.com/).
19
+ with(headers: {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
20
+ to_return(status: 200, body: @menus)
21
+ response = @client.menus_for('island-prime')
22
+ expect(response).to be_a(Singleplatform::Response)
23
+ expect(response.body.size).to eql(2)
24
+ end
25
+ end
26
+
27
+ context "when missing a location id" do
28
+ it "raises an ArgumentError" do
29
+ expect { @client.menus_for }.to raise_error(ArgumentError)
30
+ end
31
+ end
32
+
33
+ context "when given an invalid location id" do
34
+ it "raises an InvalidLocationError" do
35
+ expect { @client.menus_for('') }.to raise_error(Singleplatform::Error::InvalidLocationError)
36
+ expect { @client.menus_for(' ') }.to raise_error(Singleplatform::Error::InvalidLocationError)
37
+ end
38
+ end
39
+ end
40
+
41
+ end
@@ -0,0 +1,41 @@
1
+ require 'singleplatform'
2
+ require 'webmock/rspec'
3
+
4
+ describe Singleplatform::Client::Photos do
5
+
6
+ before do
7
+ @creds = {
8
+ client_id: 'purplespacesuitfrogboots1',
9
+ client_secret: 'yellowsubmarinesresonatewithmeandmybestbros'
10
+ }
11
+ @client = Singleplatform::Client.new(@creds)
12
+ @photos = File.open(Dir.pwd + '/spec/support/fixtures/photos.json').read
13
+ end
14
+
15
+ describe ".photos_for" do
16
+ context "when given a valid location id" do
17
+ it "returns photos for that location" do
18
+ stub_request(:get, /publishing-api.singleplatform.com/).
19
+ with(headers: {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
20
+ to_return(status: 200, body: @photos)
21
+ response = @client.photos_for('island-prime')
22
+ expect(response).to be_a(Singleplatform::Response)
23
+ expect(response.body.first.title).to eql('Key Lime Pie')
24
+ end
25
+ end
26
+
27
+ context "when missing a location id" do
28
+ it "raises an ArgumentError" do
29
+ expect { @client.photos_for }.to raise_error(ArgumentError)
30
+ end
31
+ end
32
+
33
+ context "when given an invalid location id" do
34
+ it "raises an InvalidLocationError" do
35
+ expect { @client.photos_for('') }.to raise_error(Singleplatform::Error::InvalidLocationError)
36
+ expect { @client.photos_for(' ') }.to raise_error(Singleplatform::Error::InvalidLocationError)
37
+ end
38
+ end
39
+ end
40
+
41
+ end
@@ -0,0 +1,37 @@
1
+ require 'singleplatform'
2
+
3
+ describe Singleplatform::Client do
4
+ before do
5
+ @creds = {
6
+ client_id: 'purplespacesuitfrogboots1',
7
+ client_secret: 'yellowsubmarinesresonatewithmeandmybestbros'
8
+ }
9
+ @path = '/locations/updated_since/'
10
+ @params = { date: '2016-08-01', limit: 100 }
11
+ @client = Singleplatform::Client.new(@creds)
12
+ @url = 'http://publishing-api.singleplatform.com/locations/updated_since/?date=2016-08-01&limit=100&client=purplespacesuitfrogboots1&signature=D4mf0vL2jwJKU02OawPlXFXQymg%3D'
13
+ end
14
+
15
+ describe ".new" do
16
+ context "given API credentials" do
17
+ it "returns a Singleplatform::Client object" do
18
+ expect(Singleplatform.new(@creds)).to be_a(Singleplatform::Client)
19
+ end
20
+ end
21
+
22
+ context "without API credentials" do
23
+ it "raises a MissingCredentialsError" do
24
+ expect { Singleplatform.new }.
25
+ to raise_error(Singleplatform::Error::MissingCredentialsError)
26
+ end
27
+ end
28
+ end
29
+
30
+ describe ".generate_url" do
31
+ context "given a valid path and params" do
32
+ it "correctly generates a URL" do
33
+ expect(@client.generate_url(@path, @params)).to eql(@url)
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,27 @@
1
+ require 'singleplatform'
2
+ require 'spec_helper'
3
+
4
+ describe Singleplatform do
5
+
6
+ before do
7
+ @creds = {
8
+ client_id: 'purplespacesuitfrogboots1',
9
+ client_secret: 'yellowsubmarinesresonatewithmeandmybestbros'
10
+ }
11
+ end
12
+
13
+ describe ".new" do
14
+ context "given API credentials" do
15
+ it "returns a Singleplatform::Client object" do
16
+ expect(Singleplatform.new(@creds)).to be_a(Singleplatform::Client)
17
+ end
18
+ end
19
+
20
+ context "without API credentials" do
21
+ it "raises a MissingCredentialsError" do
22
+ expect { Singleplatform.new }.
23
+ to raise_error(Singleplatform::Error::MissingCredentialsError)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,9 @@
1
+ require 'webmock/rspec'
2
+
3
+ WebMock.disable_net_connect!(allow_localhost: true)
4
+
5
+ # RSpec.configure do |config|
6
+ # config.before(:each) do
7
+
8
+ # end
9
+ # end
@@ -0,0 +1,114 @@
1
+ {
2
+ "data" : {
3
+ "updated" : "2014-03-31T14:28:42",
4
+ "published_at" : "2013-09-06T12:14:53",
5
+ "is_owner_verified" : true,
6
+ "out_of_business" : false,
7
+ "phone" : "619-298-6802",
8
+ "email" : "info@dinecrg.com",
9
+ "location" : {
10
+ "postal_code" : "92101",
11
+ "directions" : "Across from the San Diego International Airport (Terminal 1). Next to the Sunroad Marina.",
12
+ "country" : "US",
13
+ "neighborhood" : "Harbor Island",
14
+ "state" : "CA",
15
+ "longitude" : -117.19511,
16
+ "latitude" : 32.72495,
17
+ "cross_street" : "N Harbor Drive",
18
+ "city" : "San Diego",
19
+ "address1" : "880 Harbor Island Dr",
20
+ "address2" : "Test Suit"
21
+ },
22
+ "foreign_ids" : {
23
+ "facebook" : "467871149918479",
24
+ "yelp" : "sNhSsshDp5fuIhjl99tfng",
25
+ "foursquare" : "48331810f964a520e24f1fe3"
26
+ },
27
+ "hours" : {
28
+ "Wednesday" : [
29
+ {
30
+ "closing" : "09:00pm",
31
+ "opening" : "11:30am",
32
+ "description" : ""
33
+ }
34
+ ],
35
+ "Saturday" : [
36
+ {
37
+ "description" : "",
38
+ "opening" : "11:30am",
39
+ "closing" : "10:00pm"
40
+ }
41
+ ],
42
+ "Sunday" : [
43
+ {
44
+ "closing" : "09:30pm",
45
+ "description" : "",
46
+ "opening" : "11:30am"
47
+ }
48
+ ],
49
+ "Monday" : [
50
+ {
51
+ "closing" : "09:00pm",
52
+ "description" : "",
53
+ "opening" : "11:30am"
54
+ }
55
+ ],
56
+ "Tuesday" : [
57
+ {
58
+ "description" : "",
59
+ "opening" : "11:30am",
60
+ "closing" : "09:00pm"
61
+ }
62
+ ],
63
+ "Thursday" : [
64
+ {
65
+ "opening" : "11:30am",
66
+ "description" : "",
67
+ "closing" : "09:00pm"
68
+ }
69
+ ],
70
+ "Friday" : [
71
+ {
72
+ "closing" : "10:00pm",
73
+ "opening" : "11:30am",
74
+ "description" : ""
75
+ }
76
+ ]
77
+ },
78
+ "created" : "2011-12-01T00:00:00",
79
+ "location_id" : "island-prime",
80
+ "description" : "Resting on stilts atop San Diego Bay overlooking the city skyline and Coronado, there",
81
+ "name" : "Island Prime",
82
+ "website" : "http://www.islandprime.com/",
83
+ "attributes" : {
84
+ "delivery" : true,
85
+ "alcohol" : "Full Bar",
86
+ "cuisine" : [
87
+ "American - Contemporary",
88
+ "American - Traditional",
89
+ "Seafood",
90
+ "Steakhouse"
91
+ ],
92
+ "wheelchair_access" : true,
93
+ "drive_thru" : true,
94
+ "reservations" : true,
95
+ "dine_in" : true,
96
+ "catering" : true,
97
+ "meals_served" : [
98
+ "Lunch",
99
+ "Dinner"
100
+ ],
101
+ "payment_types_accepted" : [
102
+ "All Major Cards"
103
+ ],
104
+ "take_out" : true,
105
+ "price_rating" : "3",
106
+ "average_price" : "12"
107
+ },
108
+ "time_zone" : "PST",
109
+ "business_type" : "Restaurant",
110
+ "is_published" : true,
111
+ "has_photos" : true
112
+ },
113
+ "code" : 200
114
+ }
@@ -0,0 +1,374 @@
1
+ {
2
+ "data" : [
3
+ {
4
+ "attribution_image" : "http://a.singleplatform.com/sp/island-prime/provided_by_2.png",
5
+ "location_id" : "island-prime",
6
+ "footnote" : "",
7
+ "currency" : "USD",
8
+ "description" : "",
9
+ "sections" : [
10
+ {
11
+ "items" : [
12
+ {
13
+ "additions" : [],
14
+ "id" : 25765840,
15
+ "order_num" : 0,
16
+ "name" : "Island Prime's Lobster Bisque",
17
+ "photos" : [],
18
+ "description" : "sherry, cream & lobster",
19
+ "attributes" : {},
20
+ "choices" : [
21
+ {
22
+ "calories" : {
23
+ "max" : "",
24
+ "min" : ""
25
+ },
26
+ "prices" : {
27
+ "min" : 12,
28
+ "max" : 13
29
+ },
30
+ "order_num" : 0,
31
+ "name" : "",
32
+ "unit" : ""
33
+ }
34
+ ]
35
+ },
36
+ {
37
+ "choices" : [
38
+ {
39
+ "calories" : {
40
+ "min" : "",
41
+ "max" : ""
42
+ },
43
+ "prices" : {
44
+ "max" : 18,
45
+ "min" : 18
46
+ },
47
+ "name" : "",
48
+ "order_num" : 0,
49
+ "unit" : ""
50
+ }
51
+ ],
52
+ "attributes" : {},
53
+ "description" : "blue crab salad, avocado, \npapaya-mango salsa, taro chips & caviar",
54
+ "photos" : [
55
+ {
56
+ "title" : "Seared Ahi Stack",
57
+ "type" : "Product",
58
+ "url" : "https://d3lawkbdj6aabd.cloudfront.net/singleplatform/image/upload/a3b8de0f48c57ea83c252c7e34f5f3cef919f2f1.jpg",
59
+ "source" : "singleplatform",
60
+ "photo_id" : "a3b8de0f48c57ea83c252c7e34f5f3cef919f2f1"
61
+ }
62
+ ],
63
+ "name" : "Seared Ahi Stack",
64
+ "order_num" : 1,
65
+ "id" : 25765874,
66
+ "additions" : []
67
+ }
68
+ ],
69
+ "order_num" : 0,
70
+ "name" : "Appetizers From The Sea",
71
+ "description" : "",
72
+ "id" : 3497452
73
+ },
74
+ {
75
+ "items" : [
76
+ {
77
+ "choices" : [
78
+ {
79
+ "calories" : {
80
+ "min" : "",
81
+ "max" : ""
82
+ },
83
+ "order_num" : 0,
84
+ "name" : "8oz",
85
+ "unit" : "",
86
+ "prices" : {
87
+ "min" : 36,
88
+ "max" : 36
89
+ }
90
+ },
91
+ {
92
+ "prices" : {
93
+ "min" : 45,
94
+ "max" : 45
95
+ },
96
+ "unit" : "",
97
+ "order_num" : 0,
98
+ "name" : "12oz",
99
+ "calories" : {
100
+ "max" : "",
101
+ "min" : ""
102
+ }
103
+ }
104
+ ],
105
+ "description" : "",
106
+ "attributes" : {},
107
+ "photos" : [],
108
+ "additions" : [],
109
+ "name" : "\"CAB\" Center Cut Filet Mignon",
110
+ "order_num" : 0,
111
+ "id" : 25765950
112
+ },
113
+ {
114
+ "choices" : [
115
+ {
116
+ "calories" : {
117
+ "max" : "",
118
+ "min" : ""
119
+ },
120
+ "unit" : "",
121
+ "name" : "",
122
+ "order_num" : 0,
123
+ "prices" : {
124
+ "max" : 45,
125
+ "min" : 45
126
+ }
127
+ }
128
+ ],
129
+ "attributes" : {},
130
+ "description" : "16oz",
131
+ "photos" : [],
132
+ "additions" : [],
133
+ "id" : 25765961,
134
+ "order_num" : 1,
135
+ "name" : "\"CAB\" Center Cut New York"
136
+ }
137
+ ],
138
+ "description" : "Our Steaks Are Hand Selected & Cut To Chef Deborah's Specifications",
139
+ "name" : "Island Prime Artisan Steaks",
140
+ "order_num" : 1,
141
+ "id" : 3497473
142
+ },
143
+ {
144
+ "items" : [
145
+ {
146
+ "description" : "seabeans, roasted pineapple salsa, yuzu beurre blanc",
147
+ "attributes" : {},
148
+ "choices" : [
149
+ {
150
+ "calories" : {
151
+ "min" : "",
152
+ "max" : ""
153
+ },
154
+ "unit" : "",
155
+ "name" : "",
156
+ "order_num" : 0,
157
+ "prices" : {
158
+ "max" : 32,
159
+ "min" : 32
160
+ }
161
+ }
162
+ ],
163
+ "additions" : [],
164
+ "name" : "Macadamia Crusted Seabass",
165
+ "order_num" : 0,
166
+ "id" : 25766096,
167
+ "photos" : []
168
+ },
169
+ {
170
+ "attributes" : {},
171
+ "description" : "black linguini, cucumber salsa, dill moleta & chipotle cream",
172
+ "choices" : [
173
+ {
174
+ "calories" : {
175
+ "max" : "",
176
+ "min" : ""
177
+ },
178
+ "name" : "",
179
+ "order_num" : 0,
180
+ "unit" : "",
181
+ "prices" : {
182
+ "min" : 32,
183
+ "max" : 32
184
+ }
185
+ }
186
+ ],
187
+ "additions" : [],
188
+ "id" : 25766102,
189
+ "name" : "Indigo Grill's Cedar Plank Salmon",
190
+ "order_num" : 1,
191
+ "photos" : [
192
+ {
193
+ "title" : "Indigo Grill's Cedar Plank Salmon",
194
+ "type" : "unclassified",
195
+ "url" : "https://d3lawkbdj6aabd.cloudfront.net/singleplatform/image/upload/0cec0bda6bcf6cd598e5a98856decf0473e1040c.jpg",
196
+ "source" : "singleplatform",
197
+ "photo_id" : "0cec0bda6bcf6cd598e5a98856decf0473e1040c"
198
+ }
199
+ ]
200
+ },
201
+ {
202
+ "description" : "baked potato & brown butter broccoli",
203
+ "attributes" : {},
204
+ "choices" : [
205
+ {
206
+ "name" : "",
207
+ "order_num" : 0,
208
+ "unit" : "",
209
+ "prices" : {
210
+ "min" : 48,
211
+ "max" : 48
212
+ },
213
+ "calories" : {
214
+ "min" : "",
215
+ "max" : ""
216
+ }
217
+ }
218
+ ],
219
+ "additions" : [],
220
+ "order_num" : 2,
221
+ "name" : "1lb Alaskan King Crab Legs",
222
+ "id" : 25766162,
223
+ "photos" : []
224
+ }
225
+ ],
226
+ "id" : 3497500,
227
+ "order_num" : 2,
228
+ "name" : "Deborah's Compositions",
229
+ "description" : ""
230
+ }
231
+ ],
232
+ "attribution_image_link" : "http://www.singleplatform.com/partner-lp?ref=sp&sp_channel=viral&sp_source=publisher&sp_campaign=sp",
233
+ "secure_attribution_image_link" : "https://www.singleplatform.com/partner-lp?ref=sp&sp_channel=viral&sp_source=publisher&sp_campaign=sp",
234
+ "updated" : "2014-03-31T14:28:42",
235
+ "secure_attribution_image" : "https://as.singleplatform.com/sp/island-prime/provided_by_2.png",
236
+ "id" : 617618,
237
+ "created" : "2012-08-23T18:03:04",
238
+ "order_num" : 0,
239
+ "name" : "Island Prime",
240
+ "menu_type" : "Menu"
241
+ },
242
+ {
243
+ "updated" : "2013-11-23T17:50:06",
244
+ "secure_attribution_image" : "https://as.singleplatform.com/sp/island-prime/provided_by_2.png",
245
+ "created" : "2013-11-23T17:50:06",
246
+ "name" : "Dessert",
247
+ "order_num" : 5,
248
+ "id" : 935054,
249
+ "menu_type" : "Menu",
250
+ "attribution_image" : "http://a.singleplatform.com/sp/island-prime/provided_by_2.png",
251
+ "location_id" : "island-prime",
252
+ "currency" : "USD",
253
+ "description" : "",
254
+ "footnote" : "",
255
+ "secure_attribution_image_link" : "https://www.singleplatform.com/partner-lp?ref=sp&sp_channel=viral&sp_source=publisher&sp_campaign=sp",
256
+ "attribution_image_link" : "http://www.singleplatform.com/partner-lp?ref=sp&sp_channel=viral&sp_source=publisher&sp_campaign=sp",
257
+ "sections" : [
258
+ {
259
+ "items" : [
260
+ {
261
+ "photos" : [],
262
+ "additions" : [],
263
+ "order_num" : 0,
264
+ "name" : "Potted Brownie Banana Split",
265
+ "id" : 38071826,
266
+ "choices" : [
267
+ {
268
+ "unit" : "",
269
+ "name" : "",
270
+ "order_num" : 0,
271
+ "prices" : {
272
+ "max" : 10,
273
+ "min" : 10
274
+ },
275
+ "calories" : {
276
+ "max" : "",
277
+ "min" : ""
278
+ }
279
+ }
280
+ ],
281
+ "description" : "homemade peanut butter ice cream over a warm brownie with butterscotch fudge & bruleed bananas",
282
+ "attributes" : {}
283
+ },
284
+ {
285
+ "choices" : [
286
+ {
287
+ "calories" : {
288
+ "min" : "",
289
+ "max" : ""
290
+ },
291
+ "unit" : "",
292
+ "name" : "",
293
+ "order_num" : 0,
294
+ "prices" : {
295
+ "max" : 10,
296
+ "min" : 10
297
+ }
298
+ }
299
+ ],
300
+ "description" : "rich lime custard baked in a graham cracker crust, finished with meringue & pomegranate coulis",
301
+ "attributes" : {},
302
+ "photos" : [
303
+ {
304
+ "title" : "Key Lime Pie",
305
+ "type" : "unclassified",
306
+ "source" : "singleplatform",
307
+ "url" : "https://d3lawkbdj6aabd.cloudfront.net/singleplatform/image/upload/e8adb3eebbdfd228adddde03d20eac16cda3b253.jpg",
308
+ "photo_id" : "e8adb3eebbdfd228adddde03d20eac16cda3b253"
309
+ }
310
+ ],
311
+ "additions" : [],
312
+ "order_num" : 1,
313
+ "name" : "Key Lime Pie",
314
+ "id" : 38071828
315
+ },
316
+ {
317
+ "additions" : [],
318
+ "id" : 38071832,
319
+ "name" : "Retro Island Prime Mud Pie",
320
+ "order_num" : 2,
321
+ "photos" : [],
322
+ "attributes" : {},
323
+ "description" : "mountains of coffee ice cream over a chocolate ganache, homemade fudge",
324
+ "choices" : [
325
+ {
326
+ "calories" : {
327
+ "max" : "",
328
+ "min" : ""
329
+ },
330
+ "unit" : "",
331
+ "order_num" : 0,
332
+ "name" : "",
333
+ "prices" : {
334
+ "min" : 10,
335
+ "max" : 10
336
+ }
337
+ }
338
+ ]
339
+ },
340
+ {
341
+ "description" : "seasonal selections: raspberry white chocolate with a raspberry white chocolate cookie | apricot chai with apricot biscotti | vanilla bean with a mint sprig and icebox cookie",
342
+ "attributes" : {},
343
+ "choices" : [
344
+ {
345
+ "prices" : {
346
+ "min" : 10,
347
+ "max" : 10
348
+ },
349
+ "order_num" : 0,
350
+ "name" : "",
351
+ "unit" : "",
352
+ "calories" : {
353
+ "max" : "",
354
+ "min" : ""
355
+ }
356
+ }
357
+ ],
358
+ "additions" : [],
359
+ "name" : "Trio of Brulees",
360
+ "order_num" : 3,
361
+ "id" : 38071827,
362
+ "photos" : []
363
+ }
364
+ ],
365
+ "id" : 5452113,
366
+ "order_num" : 0,
367
+ "name" : "Desserts",
368
+ "description" : ""
369
+ }
370
+ ]
371
+ }
372
+ ],
373
+ "code" : 200
374
+ }