-
Notifications
You must be signed in to change notification settings - Fork 3
/
index.js
98 lines (84 loc) · 2.44 KB
/
index.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
var util = require('util'),
Rest = require('rest.node');
function Facebook(key) {
Rest.call(this, 'https://graph.facebook.com');
this.key = key;
}
util.inherits(Facebook, Rest);
urlencode = function(val, prefix) {
var arr, k, v;
if (prefix == null) {
prefix = '';
}
arr = [];
for (k in val) {
v = val[k];
if ((prefix != null) && prefix !== '') {
k = "" + prefix + "[" + k + "]";
}
if (Array.isArray(v)) {
Array.prototype.push.apply(arr, v.map(function(i, idx) {
return "" + k + "[" + idx + "]=" + (encodeURIComponent(i));
}));
} else if (typeof v === 'object' && Object.prototype.toString(v) === '[object Object]') {
arr.push(urlencode(v, k));
} else {
arr.push(k + '=' + encodeURIComponent(v));
}
}
return arr.join('&');
};
Facebook.prototype.createQuerystring = function(opts) {
return urlencode(opts);
};
// paging (limit,offset / until,since)
Facebook.prototype.graph = function(method, options, callback) {
if ('function' === typeof(options)) {
callback = options;
options = {};
}
options.access_token = this.key;
this.get(method, options, callback);
};
Facebook.prototype.delete_graph = function(method, options, callback) {
if ('function' === typeof(options)) {
callback = options;
options = {};
}
options.access_token = this.key;
this.delete(method, options, callback);
};
Facebook.prototype.post_graph = function(method, options, callback) {
if ('function' === typeof(options)) {
callback = options;
options = {};
}
options.access_token = this.key;
this.post(method, options, callback);
};
Facebook.prototype.graph_each = function(method, options, itemCallback, completionCallback) {
if ('function' === typeof(options)) {
completionCallback = itemCallback;
itemCallback = options;
options = {};
}
this.graph(method, options, function(err, data) {
var count = 0;
if (!err) {
if (data.data instanceof Array) {
for (; count < data.data.length; ++count) {
itemCallback(data.data[count], count, data.data);
}
} else {
++count;
itemCallback(data.data);
}
}
completionCallback && completionCallback(err, count);
});
};
Facebook.prototype.fql = function(query, callback) {
var q = typeof(query) === 'string' ? query : JSON.stringify(query);
this.get('fql', {access_token: this.key, q: q}, callback);
};
module.exports = Facebook;