-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
101 lines (79 loc) · 2.3 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
99
100
101
var xhr = require('nets')
var _url = '', _proxy = null, _method = 'query', _params = null;
//Private members
var _fetch = function(url, callback){
xhr({
url: url,
method: 'GET'
},
callback)
}
var _eval_params = function(params){
var str = '';
if(typeof params === 'string'){
return params;
}else if(typeof params === 'object'){
for(var key in params){
if (params.hasOwnProperty(key)) str += key+'='+params[key]+'&';
}
}
return str;
}
var _createUrl = function(method, query, params){
var paramsStr = '';
if(params !== null)
paramsStr = '?'+_eval_params(params);
var url = _url+'/'+method+'/'+query+paramsStr;
url = url.replace('//'+method, '/'+method);
return _processProxy(url);
}
var _processProxy = function(url){
if (typeof _proxy === 'function') return _proxy(url);
if(typeof _proxy === 'string') return _proxy +'?url='+url;
return url;
}
//Public members
var psicquicServer = function(){}
psicquicServer.url = function(_){
if (!arguments.length)
return _url;
_url = _;
return psicquicServer;
};
psicquicServer.proxy = function(_){
if (!arguments.length)
return _proxy;
_proxy = _;
return psicquicServer;
};
psicquicServer.method = function(_){
if (!arguments.length)
return _method;
_method = _;
return psicquicServer;
};
psicquicServer.params = function(_){
if (!arguments.length)
return _params;
_params = _;
return psicquicServer;
};
psicquicServer.query = function(query, callback){
var url = _createUrl(_method, query, _params);
_fetch(url, callback);
};
psicquicServer.count = function(query, callback){
var url = _createUrl(_method, query, {format:'count'});
_fetch(url, callback);
}
psicquicServer.getInteractionsForIds = function(ids, params, callback){
var query = 'idA:('+ids.join(' OR ')+') AND idB:('+ids.join(' OR ')+')';
var url = _createUrl('query', query, params);
_fetch(url, callback);
};
psicquicServer.getExpandedInteractionsForIds = function(ids, params, callback){
var query = 'identifier:('+ids.join(' OR ')+')';
var url = _createUrl('query', query, params);
_fetch(url, callback);
};
module.exports = psicquicServer;