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 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: