2016-11-22 21:19:08 +01:00
|
|
|
import lbry from './lbry.js';
|
|
|
|
|
|
|
|
var lighthouse = {
|
2016-11-11 14:17:43 +01:00
|
|
|
_search_timeout: 5000,
|
|
|
|
_max_search_tries: 5,
|
|
|
|
|
2016-08-18 09:14:38 +02:00
|
|
|
servers: [
|
2016-12-29 02:59:30 +01:00
|
|
|
'http://lighthouse4.lbry.io:50005',
|
|
|
|
'http://lighthouse5.lbry.io:50005',
|
|
|
|
'http://lighthouse6.lbry.io:50005',
|
2016-08-18 09:14:38 +02:00
|
|
|
],
|
|
|
|
path: '/',
|
|
|
|
|
2016-11-11 14:17:43 +01:00
|
|
|
call: function(method, params, callback, errorCallback, connectFailedCallback, timeout) {
|
|
|
|
lbry.jsonrpc_call(this.server + this.path, method, params, callback, errorCallback, connectFailedCallback, timeout);
|
2016-08-18 09:14:38 +02:00
|
|
|
},
|
2016-11-11 14:17:43 +01:00
|
|
|
|
2016-12-08 00:00:31 +01:00
|
|
|
search: function(query, callback, errorCallback, connectFailedCallback, timeout) {
|
2016-11-11 14:17:43 +01:00
|
|
|
let handleSearchFailed = function(tryNum=0) {
|
2016-11-22 21:19:08 +01:00
|
|
|
if (tryNum > lighthouse._max_search_tries) {
|
2016-12-08 00:00:31 +01:00
|
|
|
if (connectFailedCallback) {
|
|
|
|
connectFailedCallback();
|
|
|
|
} else {
|
|
|
|
throw new Error(`Could not connect to Lighthouse server. Last server attempted: ${lighthouse.server}`);
|
|
|
|
}
|
2016-11-11 14:17:43 +01:00
|
|
|
} else {
|
|
|
|
// Randomly choose one of the other search servers to switch to
|
2016-11-22 21:19:08 +01:00
|
|
|
let otherServers = lighthouse.servers.slice();
|
|
|
|
otherServers.splice(otherServers.indexOf(lighthouse.server), 1);
|
|
|
|
lighthouse.server = otherServers[Math.round(Math.random() * (otherServers.length - 1))];
|
2016-11-11 14:17:43 +01:00
|
|
|
|
2016-12-08 00:00:31 +01:00
|
|
|
lighthouse.call('search', [query], callback, errorCallback, function() {
|
2016-11-11 14:17:43 +01:00
|
|
|
handleSearchFailed(tryNum + 1);
|
2016-11-22 21:19:08 +01:00
|
|
|
}, lighthouse._search_timeout);
|
2016-11-11 14:17:43 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-12-08 00:00:31 +01:00
|
|
|
lighthouse.call('search', [query], callback, errorCallback, function() { handleSearchFailed() }, lighthouse._search_timeout);
|
2016-12-09 10:57:13 +01:00
|
|
|
},
|
|
|
|
|
|
|
|
getSizeForName: function(name, callback, errorCallback, connectFailedCallback, timeout) {
|
|
|
|
return lighthouse.call('get_size_for_name', [name], callback, errorCallback, connectFailedCallback, timeout);
|
2016-11-11 14:17:43 +01:00
|
|
|
}
|
2016-08-18 09:14:38 +02:00
|
|
|
};
|
|
|
|
|
2016-11-22 21:19:08 +01:00
|
|
|
lighthouse.server = lighthouse.servers[Math.round(Math.random() * (lighthouse.servers.length - 1))];
|
|
|
|
|
|
|
|
export default lighthouse;
|