Class: Foursquare

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/foursquare.rb

Defined Under Namespace

Classes: AuthenticationRequiredError, VenueNotFoundError

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(username = nil, password = nil) ⇒ Foursquare

Returns a new instance of Foursquare.



11
12
13
# File 'lib/foursquare.rb', line 11

def initialize(username = nil, password = nil)
  @auth = {:username => username, :password => password}
end

Class Method Details

.available?Boolean

Test if API is up and available api.playfoursquare.com/v1/test

Returns:

  • (Boolean)


114
115
116
117
# File 'lib/foursquare.rb', line 114

def self.available?
  response = get("/test.json", :query => nil)
  (!response.nil? && response["response"] == "ok") ? true : false
end

.citiesObject

Returns a list of currently active cities. api.playfoursquare.com/v1/cities



78
79
80
# File 'lib/foursquare.rb', line 78

def self.cities
  get("/cities.json", :query => nil)["cities"]
end

.tips(options = {}) ⇒ Object

Returns a list of tips near the area specified. (The distance returned is in miles). Options

:geolat   => latitude (required)
:geolong  => longitude (required)

api.playfoursquare.com/v1/tips



89
90
91
92
# File 'lib/foursquare.rb', line 89

def self.tips(options = {})
  require_latitude_and_longitude(options)
  # XXX
end

.venues(options = {}) ⇒ Object

Returns a list of venues near the area specified or that match the search term. Distance returned is in miles. It will return venue meta-data related to you and your friends.

Options

:geolat   => latitude (required)
:geolong  => longitude (required)
:r        => radius in miles (optional)
:l        => limit of results (optional, default 10)
:q        => keyword search (optional)

api.playfoursquare.com/v1/venues



106
107
108
109
110
# File 'lib/foursquare.rb', line 106

def self.venues(options = {})
  require_latitude_and_longitude(options)

  get("/venues.json", :query => options)["venues"]["group"]
end

Instance Method Details

#checkin(options = {}) ⇒ Object

:geolat => (optional, but recommended)

:geolong  => (optional, but recommended)

Raises:



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/foursquare.rb', line 31

def checkin(options = {})
  unless options[:private].nil?
    options[:private] = 1 if options[:private] == true
    options[:private] = 0 if options[:private] == false
  end
  unless options[:twitter].nil?
    options[:twitter] = 1 if options[:twitter] == true
    options[:twitter] = 0 if options[:twitter] == false
  end
  response = self.class.post("/checkin.json",
                             :query => options,
                             :basic_auth => @auth)
  raise VenueNotFoundError if response.keys.include?("addvenueprompt")
  response["checkin"]
end

#user(options = {}) ⇒ Object

Returns data for a particular user

Options

:uid    => userid for the user whose information you want to retrieve. 
           if you do not specify a 'uid', the authenticated user's 
           profile data will be returned.
:badges => (optional, default: false) set to true ("1") to also show 
           badges for this user
:mayor  => (optional, default: false) set to true ("1") to also show 
           venues for which this user is a mayor


68
69
70
# File 'lib/foursquare.rb', line 68

def user(options = {}) 
  self.class.get("/user.json", :query => options)["user"]
end

#venues(options = {}) ⇒ Object

Like self.venues(), except when authenticated the method will return venue meta-data related to you and your friends.



49
50
51
52
53
54
55
56
# File 'lib/foursquare.rb', line 49

def venues(options = {})
  self.class.require_latitude_and_longitude(options)

  response = self.class.get("/venues.json",
                            :query => options,
                            :basic_auth => @auth)["venues"]
  response && response.flatten
end