1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | xhr = require 'request'
|
8 | qs = require 'querystring'
|
9 |
|
10 | class 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 |
|
67 | module.exports = Foursquare |
\ | No newline at end of file |