-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbackbone.api.foursquare.js
129 lines (98 loc) · 3.05 KB
/
backbone.api.foursquare.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/* Backbone API: Foursquare
* Source: https://github.com/backbone-api/foursquare
*
* Created by Makis Tracend (@tracend)
* Distributed through [Makesites.org](http://makesites.org)
* Released under the [MIT license](http://makesites.org/licenses/MIT)
*/
(function(_, Backbone) {
// Reference: https://developer.foursquare.com/docs/
var api = "https://api.foursquare.com/v2";
// support the APP namespace (if available)
var Model = ( typeof APP != "undefined" && !_.isUndefined( APP.Model) ) ? APP.Model : Backbone.Model;
var View = (typeof APP != "undefined" && !_.isUndefined( APP.View) ) ? APP.View : Backbone.View;
var Collection = (typeof APP != "undefined" && !_.isUndefined( APP.Collection) ) ? APP.Collection : Backbone.Collection;
// main request method
var Foursquare = new Backbone.Model({
api: api,
token: 0
});
// namespace
Foursquare.Models = {};
Foursquare.Collection = {};
Foursquare.Views = {};
// **Models**: ...
Foursquare.Models.User = Model.extend({
url: function(){ return Foursquare.get("api") +"/users/"+ this.get("id") },
defaults: { },
parse: function( data ){
return (data.user) ? data.user : data;
}
});
Foursquare.Models.Me = Foursquare.Models.User.extend({
defaults : {
id : "self"
}
});
Foursquare.Models.AddCheckin = Model.extend({
url : function(){ return Foursquare.get("api") +"/checkins/add" },
defaults : {
venueId : 0
}
});
Foursquare.Models.Friend = Model.extend({
defaults: {
},
parse: function( data ){
return (data.user) ? data.user : data;
}
});
Foursquare.Models.Venue = Model.extend({
defaults: { }
});
// **Collections**: ...
Foursquare.Collections.Tips = Collection.extend({
url: function(){ return Foursquare.get("api") +"/users/"+ this.options.user +"/tips" },
defaults: { },
options: {
user: "self"
},
parse: function( data ){
console.log(data);
return (data.tips) ? data.tips.items : data;
}
});
Foursquare.Collections.Friends = Collection.extend({
url: function(){ return Foursquare.get("api") +"/users/"+ this.options.user +"/friends" },
options: {
user: "self"
},
parse: function( data ){
return (data.friends) ? data.friends.items : data;
}
});
Foursquare.Collections.Venues = Collection.extend({
url: function(){
return Foursquare.get("api") +"/venues/search?"
+ "ll="+ app.state.location.coords.latitude +","+ app.state.location.coords.longitude
+"&radius=50"; // hard-code radius to 50m
//+"&oauth_token="+ app.session.get("access_token");
},
parse: function( data ){
//console.log( data );
return (data.venues) ? data.venues : data;
}
});
// Store in selected namespace(s)
if( _.isUndefined(Backbone.API) ) Backbone.API = {};
Backbone.API.Foursquare = Foursquare;
// alias APP.API
if( typeof APP != "undefined" && (_.isUndefined( APP.API) || _.isUndefined( APP.API.Foursquare) ) ){
APP.API = APP.API || {};
APP.API.Foursquare = Backbone.API.Foursquare;
}
// Shortcut
if(typeof window.Foursquare == "undefined"){
window.Foursquare = Foursquare;
}
})(this._, this.Backbone);