UNPKG

1.68 kBtext/coffeescriptView Raw
1###
2 node-4sq 0.1.0
3 (c) 2012 Alexey Simonenko, Serenity LLC.
4###
5
6# Constructor
7xhr = require 'request'
8qs = require 'querystring'
9
10class Foursquare
11 apihost = 'https://api.foursquare.com'
12 version = 'v2'
13
14 constructor: (@options = {}) ->
15 date = new Date()
16 month = date.getMonth() + 1
17
18 options.date = date.getFullYear()
19 options.date += (if month < 10 then '0' else '') + month
20 options.date += (if date.getDate() < 10 then '0' else '') + date.getDate()
21
22 user: (userid, params, fn) ->
23 userid = 'self' if not userid or parseInt(userid, 10) <= 0
24
25 if isFunction params
26 fn = params
27 params = {}
28
29 @scheme = "/users/#{userid}"
30 request @, params, fn
31
32 checkins: (userid, params, fn) ->
33 userid = 'self' if not userid or parseInt(userid, 10) <= 0
34
35 if isFunction params
36 fn = params
37 params = {}
38
39 @scheme = "/users/#{userid}/checkins"
40 request @, params, fn
41
42 badges: (userid, params, fn) ->
43 userid = 'self' if not userid or parseInt(userid, 10) <= 0
44
45 if isFunction params
46 fn = params
47 params = {}
48
49 @scheme = "/users/#{userid}/badges"
50 request @, params, fn
51
52 request = (self, query = {}, fn = ->) ->
53 query.v = self.options.date
54 query = qs.stringify query
55
56 params = url: "#{apihost}/#{version}#{self.scheme}?oauth_token=#{self.options.token}&#{query}"
57
58 xhr params, (error, request, body) ->
59 body = JSON.parse body
60 error = body.meta if body.meta.code isnt 200
61 data = if body.response? then body.response else null
62
63 fn.call self, error, data
64
65 isFunction = (object) -> '[object Function]' is toString.call object
66
67module.exports = Foursquare
\No newline at end of file