angular .module("webui.services.rpc.helpers", [ "webui.services.deps", "webui.services.rpc", "webui.services.alerts" ]) .factory("$rpchelpers", [ "$_", "$rpc", "$alerts", function(_, rpc, alerts) { var miscellaneous = { version: "", enabledFeatures: [] }; rpc.once("getVersion", [], function(data) { miscellaneous = data[0]; }); return { isFeatureEnabled: function(feature) { return miscellaneous.enabledFeatures.indexOf(feature) != -1; }, getAria2Version: function() { return miscellaneous.version; }, addUris: function(uris, settings, cb) { _.each(uris, function(uri) { var uri_parsed = []; // parse options passed in the URIs. E.g. http://ex1.com/f1.jpg --out=image.jpg --check-integrity var uriSettings = _.cloneDeep(settings); _.each(uri, function(uri_element) { if (uri_element.startsWith("--")) { uri_options = uri_element.split(/--|=(.*)/); if (uri_options.length > 2) { uriSettings[uri_options[2]] = uri_options[3] || "true"; } } else { uri_parsed.push(uri_element); } }); // passing true to batch all the addUri calls rpc.once("addUri", [uri_parsed, uriSettings], cb, true); }); // now dispatch all addUri syscalls rpc.forceUpdate(); }, addTorrents: function(txts, settings, cb) { _.each(txts, function(txt) { // passing true to batch all the addUri calls rpc.once("addTorrent", [txt, [], settings], cb, true); }); // now dispatch all addUri syscalls rpc.forceUpdate(); }, addMetalinks: function(txts, settings, cb) { _.each(txts, function(txt) { // passing true to batch all the addUri calls rpc.once("addMetalink", [txt, settings], cb, true); }); // now dispatch all addUri syscalls rpc.forceUpdate(); } }; } ]);