foursquare2 1.6.0 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Readme.md +3 -0
- data/VERSION +1 -1
- data/foursquare2.gemspec +6 -1
- data/lib/foursquare2.rb +2 -0
- data/lib/foursquare2/campaigns.rb +24 -0
- data/lib/foursquare2/client.rb +1 -0
- data/lib/foursquare2/specials.rb +23 -0
- data/lib/foursquare2/venues.rb +11 -0
- data/test/fixtures/campaign_created.json +34 -0
- data/test/fixtures/managed_venues.json +1 -0
- data/test/fixtures/special_created.json +13 -0
- data/test/test_campaigns.rb +17 -0
- data/test/test_specials.rb +7 -0
- data/test/test_venues.rb +7 -0
- metadata +31 -26
data/Readme.md
CHANGED
@@ -115,6 +115,9 @@ See [the documentation](http://rubydoc.info/gems/foursquare2/frames) or [foursqu
|
|
115
115
|
client.mark_venue_todo
|
116
116
|
client.flag_venue
|
117
117
|
client.propose_venue_edit
|
118
|
+
client.managed_venues
|
119
|
+
client.add_special
|
120
|
+
client.add_campaign
|
118
121
|
|
119
122
|
## Todo
|
120
123
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.7.0
|
data/foursquare2.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "foursquare2"
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.7.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Matt Mueller", "Marco Moura"]
|
@@ -26,6 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
"foursquare2.gemspec",
|
27
27
|
"lib/foursquare2.rb",
|
28
28
|
"lib/foursquare2/api_error.rb",
|
29
|
+
"lib/foursquare2/campaigns.rb",
|
29
30
|
"lib/foursquare2/checkins.rb",
|
30
31
|
"lib/foursquare2/client.rb",
|
31
32
|
"lib/foursquare2/pages.rb",
|
@@ -36,10 +37,12 @@ Gem::Specification.new do |s|
|
|
36
37
|
"lib/foursquare2/users.rb",
|
37
38
|
"lib/foursquare2/venues.rb",
|
38
39
|
"test/config.rb",
|
40
|
+
"test/fixtures/campaign_created.json",
|
39
41
|
"test/fixtures/checkin.json",
|
40
42
|
"test/fixtures/error.json",
|
41
43
|
"test/fixtures/explore_venues.json",
|
42
44
|
"test/fixtures/friend_checkins.json",
|
45
|
+
"test/fixtures/managed_venues.json",
|
43
46
|
"test/fixtures/no_venues_by_tip.json",
|
44
47
|
"test/fixtures/page.json",
|
45
48
|
"test/fixtures/page_venues.json",
|
@@ -51,6 +54,7 @@ Gem::Specification.new do |s|
|
|
51
54
|
"test/fixtures/search_venues.json",
|
52
55
|
"test/fixtures/search_venues_by_tip.json",
|
53
56
|
"test/fixtures/special.json",
|
57
|
+
"test/fixtures/special_created.json",
|
54
58
|
"test/fixtures/suggest_completion_venues.json",
|
55
59
|
"test/fixtures/tip.json",
|
56
60
|
"test/fixtures/user.json",
|
@@ -63,6 +67,7 @@ Gem::Specification.new do |s|
|
|
63
67
|
"test/fixtures/venue_photos.json",
|
64
68
|
"test/fixtures/venue_tips.json",
|
65
69
|
"test/helper.rb",
|
70
|
+
"test/test_campaigns.rb",
|
66
71
|
"test/test_checkins.rb",
|
67
72
|
"test/test_client.rb",
|
68
73
|
"test/test_pages.rb",
|
data/lib/foursquare2.rb
CHANGED
@@ -18,6 +18,7 @@ module Foursquare2
|
|
18
18
|
|
19
19
|
end
|
20
20
|
|
21
|
+
require 'foursquare2/campaigns'
|
21
22
|
require 'foursquare2/users'
|
22
23
|
require 'foursquare2/specials'
|
23
24
|
require 'foursquare2/settings'
|
@@ -28,6 +29,7 @@ module Foursquare2
|
|
28
29
|
require 'foursquare2/pages'
|
29
30
|
require 'foursquare2/client'
|
30
31
|
require 'foursquare2/api_error'
|
32
|
+
|
31
33
|
|
32
34
|
end
|
33
35
|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Foursquare2
|
2
|
+
module Campaigns
|
3
|
+
|
4
|
+
# Add a campaign
|
5
|
+
# Details on param options can be found at https://developer.foursquare.com/docs/campaigns/add
|
6
|
+
#
|
7
|
+
# @param [Hash] options
|
8
|
+
# @option options String :specialId - required (unless the campaignId parameter has been provided). special ID
|
9
|
+
# @option options String :groupId - comma-separated list of venue group IDs (either groupId or venueId is required)
|
10
|
+
# @option options String :venueId - comma-separated list of venue IDs (either groupId or venueId is required)
|
11
|
+
# @option options Integer :endAt - DateTime when the campaign is to be automatically deactivated (seconds since epoch)
|
12
|
+
# @option options Integer :startAt - DateTime when the campaign is to be started (seconds since epoch)
|
13
|
+
# @option options String :campaignId - ID of an existing campaign to copy.
|
14
|
+
#
|
15
|
+
|
16
|
+
def add_campaign(options={})
|
17
|
+
response = connection.post do |req|
|
18
|
+
req.url "campaigns/add", options
|
19
|
+
end
|
20
|
+
return_error_or_body(response, response.body.response.campaign)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
data/lib/foursquare2/client.rb
CHANGED
data/lib/foursquare2/specials.rb
CHANGED
@@ -26,6 +26,29 @@ module Foursquare2
|
|
26
26
|
return_error_or_body(response, response.body.response.specials.items)
|
27
27
|
end
|
28
28
|
|
29
|
+
# Add a special for venue managers
|
30
|
+
# Details on param options can be found at https://developer.foursquare.com/docs/specials/add
|
31
|
+
#
|
32
|
+
# @param [Hash] options
|
33
|
+
# @option options String :name - A name for the special.
|
34
|
+
# @option options String :text - Required
|
35
|
+
# @option options String :unlockedText - Required. Special text that is shown when the user has unlocked the special.
|
36
|
+
# @option options String :finePrint
|
37
|
+
# @option options Integer :count1
|
38
|
+
# @option options Integer :count2
|
39
|
+
# @option options Integer :count3
|
40
|
+
# @option options String :type - Required.
|
41
|
+
# @option options String :offerId
|
42
|
+
# @option options Float :cost
|
43
|
+
#
|
44
|
+
|
45
|
+
def add_special(options={})
|
46
|
+
response = connection.post do |req|
|
47
|
+
req.url "specials/add", options
|
48
|
+
end
|
49
|
+
return_error_or_body(response, response.body.response.special)
|
50
|
+
end
|
51
|
+
|
29
52
|
end
|
30
53
|
end
|
31
54
|
|
data/lib/foursquare2/venues.rb
CHANGED
@@ -175,5 +175,16 @@ module Foursquare2
|
|
175
175
|
response = connection.get("venues/#{venue_id}/menu")
|
176
176
|
return_error_or_body(response, response.body.response)
|
177
177
|
end
|
178
|
+
|
179
|
+
#
|
180
|
+
#Returns a list of venues managed
|
181
|
+
#
|
182
|
+
|
183
|
+
def managed_venues()
|
184
|
+
response = connection.get do |req|
|
185
|
+
req.url "venues/managed"
|
186
|
+
end
|
187
|
+
return_error_or_body(response, response.body.response.venues)
|
188
|
+
end
|
178
189
|
end
|
179
190
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
{
|
2
|
+
"meta":{"code":200}, "response":{
|
3
|
+
"campaign":{
|
4
|
+
"id":"123",
|
5
|
+
"special":{
|
6
|
+
"id":"4bd876f886ba62b58a6e88b3",
|
7
|
+
"text":"Test Special",
|
8
|
+
"name":"Special"
|
9
|
+
},
|
10
|
+
"startsAt":"1284286794",
|
11
|
+
"endsAt":"1284286794",
|
12
|
+
"venues":[
|
13
|
+
{
|
14
|
+
"count":1,
|
15
|
+
"items":[
|
16
|
+
{
|
17
|
+
"id": "4c94a45c82b56dcb47cad0aa"
|
18
|
+
}
|
19
|
+
]
|
20
|
+
}
|
21
|
+
],
|
22
|
+
"venueGroups":[
|
23
|
+
{
|
24
|
+
"count":1,
|
25
|
+
"items":[
|
26
|
+
{
|
27
|
+
"id": "4d94a45c82b56dcb47cad0aa"
|
28
|
+
}
|
29
|
+
]
|
30
|
+
}
|
31
|
+
]
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"meta":{"code":200},"notifications":[{"type":"notificationTray","item":{"unreadCount":0}}],"response":{"venues":[{"id":"4f2de7567beb9d72b6d80050","name":"Black Founders Startup Ventures","contact":{"twitter":"blackfounders"},"location":{"address":"625 2nd St","crossStreet":"Brannan","lat":37.78145065623611,"lng":-122.39134311676025,"postalCode":"94107","city":"San Francisco","state":"CA","country":"United States"},"categories":[{"id":"4bf58dd8d48988d130941735","name":"Building","pluralName":"Buildings","shortName":"Other - Buildings","icon":{"prefix":"https:\/\/foursquare.com\/img\/categories\/building\/default_","sizes":[32,44,64,88,256],"name":".png"},"primary":true}],"verified":true,"stats":{"checkinsCount":0,"usersCount":0,"tipCount":0}}]}}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestCampaigns < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context "When using the foursquare API and working with campaigns" do
|
6
|
+
setup do
|
7
|
+
@client = foursquare_test_client
|
8
|
+
end
|
9
|
+
|
10
|
+
should "add a campaign" do
|
11
|
+
stub_post("https://api.foursquare.com/v2/campaigns/add?oauth_token=#{@client.oauth_token}&specialId=4bd876f886ba62b58a6e88b3", "campaign_created.json")
|
12
|
+
campaign = @client.add_campaign(:specialId => '4bd876f886ba62b58a6e88b3')
|
13
|
+
campaign.special.id == "4bd876f886ba62b58a6e88b3"
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
data/test/test_specials.rb
CHANGED
@@ -19,5 +19,12 @@ class TestSpecials < Test::Unit::TestCase
|
|
19
19
|
specials.count.should == 1
|
20
20
|
specials.first.message.should == "Buy 1 Get 1 40% Off All Video Games (priced up to $19.99)\r\n\r\nItems must be of equal or lesser value to the lowest priced item purchased\r\n\r\nEnds 2/12/2011"
|
21
21
|
end
|
22
|
+
|
23
|
+
should "add a special for a venue with given params" do
|
24
|
+
stub_post("https://api.foursquare.com/v2/specials/add?text=Test&unlockedText=Congrats&oauth_token=#{@client.oauth_token}", "special_created.json")
|
25
|
+
special = @client.add_special(:text => 'Test', :unlockedText => 'Congrats')
|
26
|
+
special.message.should == "Test"
|
27
|
+
end
|
28
|
+
|
22
29
|
end
|
23
30
|
end
|
data/test/test_venues.rb
CHANGED
@@ -88,6 +88,13 @@ class TestVenues < Test::Unit::TestCase
|
|
88
88
|
venues = @client.suggest_completion_venues(:ll => "40.7,-74", :query => "coffee")
|
89
89
|
venues.minivenues.first.id.should == '44dc96e4f964a520b0361fe3'
|
90
90
|
end
|
91
|
+
|
92
|
+
should "fetch venue for manager" do
|
93
|
+
stub_get("https://api.foursquare.com/v2/venues/managed?oauth_token=#{@client.oauth_token}", "managed_venues.json")
|
94
|
+
venues = @client.managed_venues()
|
95
|
+
venues.first.name.should == 'Black Founders Startup Ventures'
|
96
|
+
venues.first.location.address.should == '625 2nd St'
|
97
|
+
end
|
91
98
|
|
92
99
|
should "get menus for a venue" do
|
93
100
|
stub_get("https://api.foursquare.com/v2/venues/4b2a544ff964a5204ca724e3/menu?oauth_token=#{@client.oauth_token}", "venue_menus.json")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foursquare2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -14,7 +14,7 @@ date: 2012-07-08 00:00:00.000000000Z
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: faraday
|
17
|
-
requirement: &
|
17
|
+
requirement: &70120923893680 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0.8'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70120923893680
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: faraday_middleware
|
28
|
-
requirement: &
|
28
|
+
requirement: &70120923880880 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0.8'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70120923880880
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: hashie
|
39
|
-
requirement: &
|
39
|
+
requirement: &70120923869540 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '1.0'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70120923869540
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: awesome_print
|
50
|
-
requirement: &
|
50
|
+
requirement: &70120923858740 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70120923858740
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: shoulda
|
61
|
-
requirement: &
|
61
|
+
requirement: &70120923854980 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *70120923854980
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: bundler
|
72
|
-
requirement: &
|
72
|
+
requirement: &70120923848180 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: '1.0'
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *70120923848180
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: jeweler
|
83
|
-
requirement: &
|
83
|
+
requirement: &70120923844180 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ~>
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: '1.5'
|
89
89
|
type: :development
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *70120923844180
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: rcov
|
94
|
-
requirement: &
|
94
|
+
requirement: &70120923841120 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ! '>='
|
@@ -99,10 +99,10 @@ dependencies:
|
|
99
99
|
version: '0'
|
100
100
|
type: :development
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *70120923841120
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: fakeweb
|
105
|
-
requirement: &
|
105
|
+
requirement: &70120923838680 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ~>
|
@@ -110,10 +110,10 @@ dependencies:
|
|
110
110
|
version: '1.3'
|
111
111
|
type: :development
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *70120923838680
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: jnunemaker-matchy
|
116
|
-
requirement: &
|
116
|
+
requirement: &70120923836120 !ruby/object:Gem::Requirement
|
117
117
|
none: false
|
118
118
|
requirements:
|
119
119
|
- - ~>
|
@@ -121,10 +121,10 @@ dependencies:
|
|
121
121
|
version: '0.4'
|
122
122
|
type: :development
|
123
123
|
prerelease: false
|
124
|
-
version_requirements: *
|
124
|
+
version_requirements: *70120923836120
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: json_pure
|
127
|
-
requirement: &
|
127
|
+
requirement: &70120923833420 !ruby/object:Gem::Requirement
|
128
128
|
none: false
|
129
129
|
requirements:
|
130
130
|
- - ~>
|
@@ -132,10 +132,10 @@ dependencies:
|
|
132
132
|
version: '1.4'
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
|
-
version_requirements: *
|
135
|
+
version_requirements: *70120923833420
|
136
136
|
- !ruby/object:Gem::Dependency
|
137
137
|
name: multi_json
|
138
|
-
requirement: &
|
138
|
+
requirement: &70120923831160 !ruby/object:Gem::Requirement
|
139
139
|
none: false
|
140
140
|
requirements:
|
141
141
|
- - <
|
@@ -146,7 +146,7 @@ dependencies:
|
|
146
146
|
version: 0.0.5
|
147
147
|
type: :development
|
148
148
|
prerelease: false
|
149
|
-
version_requirements: *
|
149
|
+
version_requirements: *70120923831160
|
150
150
|
description: Gives access to all endpoints in version 2 of foursquare's API with syntax
|
151
151
|
that will be familiar to those who used the original foursquare gem by Jeremy Welch.
|
152
152
|
email:
|
@@ -167,6 +167,7 @@ files:
|
|
167
167
|
- foursquare2.gemspec
|
168
168
|
- lib/foursquare2.rb
|
169
169
|
- lib/foursquare2/api_error.rb
|
170
|
+
- lib/foursquare2/campaigns.rb
|
170
171
|
- lib/foursquare2/checkins.rb
|
171
172
|
- lib/foursquare2/client.rb
|
172
173
|
- lib/foursquare2/pages.rb
|
@@ -177,10 +178,12 @@ files:
|
|
177
178
|
- lib/foursquare2/users.rb
|
178
179
|
- lib/foursquare2/venues.rb
|
179
180
|
- test/config.rb
|
181
|
+
- test/fixtures/campaign_created.json
|
180
182
|
- test/fixtures/checkin.json
|
181
183
|
- test/fixtures/error.json
|
182
184
|
- test/fixtures/explore_venues.json
|
183
185
|
- test/fixtures/friend_checkins.json
|
186
|
+
- test/fixtures/managed_venues.json
|
184
187
|
- test/fixtures/no_venues_by_tip.json
|
185
188
|
- test/fixtures/page.json
|
186
189
|
- test/fixtures/page_venues.json
|
@@ -192,6 +195,7 @@ files:
|
|
192
195
|
- test/fixtures/search_venues.json
|
193
196
|
- test/fixtures/search_venues_by_tip.json
|
194
197
|
- test/fixtures/special.json
|
198
|
+
- test/fixtures/special_created.json
|
195
199
|
- test/fixtures/suggest_completion_venues.json
|
196
200
|
- test/fixtures/tip.json
|
197
201
|
- test/fixtures/user.json
|
@@ -204,6 +208,7 @@ files:
|
|
204
208
|
- test/fixtures/venue_photos.json
|
205
209
|
- test/fixtures/venue_tips.json
|
206
210
|
- test/helper.rb
|
211
|
+
- test/test_campaigns.rb
|
207
212
|
- test/test_checkins.rb
|
208
213
|
- test/test_client.rb
|
209
214
|
- test/test_pages.rb
|
@@ -227,7 +232,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
227
232
|
version: '0'
|
228
233
|
segments:
|
229
234
|
- 0
|
230
|
-
hash: -
|
235
|
+
hash: -1741211467567860950
|
231
236
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
232
237
|
none: false
|
233
238
|
requirements:
|