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.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/Gemfile +3 -1
- data/Gemfile.lock +20 -5
- data/LICENSE.txt +21 -0
- data/README.md +29 -14
- data/Rakefile +0 -9
- data/lib/singleplatform.rb +0 -3
- data/lib/singleplatform/client.rb +34 -5
- data/lib/singleplatform/client/locations.rb +16 -6
- data/lib/singleplatform/client/menus.rb +1 -0
- data/lib/singleplatform/client/photos.rb +9 -2
- data/lib/singleplatform/error.rb +39 -0
- data/lib/singleplatform/request.rb +44 -0
- data/lib/singleplatform/response.rb +65 -0
- data/lib/singleplatform/version.rb +1 -1
- data/spec/singleplatform/client/locations_spec.rb +87 -0
- data/spec/singleplatform/client/menus_spec.rb +41 -0
- data/spec/singleplatform/client/photos_spec.rb +41 -0
- data/spec/singleplatform/client_spec.rb +37 -0
- data/spec/singleplatform_spec.rb +27 -0
- data/spec/spec_helper.rb +9 -0
- data/spec/support/fixtures/location.json +114 -0
- data/spec/support/fixtures/menus.json +374 -0
- data/spec/support/fixtures/photos.json +76 -0
- data/spec/support/fixtures/updated_since.json +233 -0
- metadata +17 -6
- data/lib/singleplatform/client/request.rb +0 -24
- data/test/singleplatform/test_client.rb +0 -15
- data/test/test_singleplatform.rb +0 -12
@@ -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
|
data/spec/spec_helper.rb
ADDED
@@ -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
|
+
}
|