foursquare2 1.6.0 → 1.7.0

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.
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.6.0
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.6.0"
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
@@ -19,6 +19,7 @@ module Foursquare2
19
19
  include Specials
20
20
  include Users
21
21
  include Pages
22
+ include Campaigns
22
23
 
23
24
  attr_reader :client_id, :client_secret, :oauth_token, :api_version
24
25
 
@@ -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
 
@@ -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,13 @@
1
+ {
2
+ "meta": {
3
+ "code": 200
4
+ },
5
+ "response": {
6
+ "special": {
7
+ "id": "4bd876f886ba62b58a6e88b3",
8
+ "type": "mayor",
9
+ "message": "Test",
10
+ "description": "Congrats"
11
+ }
12
+ }
13
+ }
@@ -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
@@ -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.6.0
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: &70327044534400 !ruby/object:Gem::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: *70327044534400
25
+ version_requirements: *70120923893680
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: faraday_middleware
28
- requirement: &70327044524520 !ruby/object:Gem::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: *70327044524520
36
+ version_requirements: *70120923880880
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: hashie
39
- requirement: &70327044517420 !ruby/object:Gem::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: *70327044517420
47
+ version_requirements: *70120923869540
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: awesome_print
50
- requirement: &70327044512180 !ruby/object:Gem::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: *70327044512180
58
+ version_requirements: *70120923858740
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: shoulda
61
- requirement: &70327044506440 !ruby/object:Gem::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: *70327044506440
69
+ version_requirements: *70120923854980
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: bundler
72
- requirement: &70327044499940 !ruby/object:Gem::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: *70327044499940
80
+ version_requirements: *70120923848180
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: jeweler
83
- requirement: &70327044497000 !ruby/object:Gem::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: *70327044497000
91
+ version_requirements: *70120923844180
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: rcov
94
- requirement: &70327044494380 !ruby/object:Gem::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: *70327044494380
102
+ version_requirements: *70120923841120
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: fakeweb
105
- requirement: &70327044490300 !ruby/object:Gem::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: *70327044490300
113
+ version_requirements: *70120923838680
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: jnunemaker-matchy
116
- requirement: &70327044485980 !ruby/object:Gem::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: *70327044485980
124
+ version_requirements: *70120923836120
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: json_pure
127
- requirement: &70327044470460 !ruby/object:Gem::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: *70327044470460
135
+ version_requirements: *70120923833420
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: multi_json
138
- requirement: &70327044468140 !ruby/object:Gem::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: *70327044468140
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: -1902868301601312681
235
+ hash: -1741211467567860950
231
236
  required_rubygems_version: !ruby/object:Gem::Requirement
232
237
  none: false
233
238
  requirements: