var PLUGIN_INFO = {NAME} Send to your Android Phone Android 端末に URL などを送信します Yuichi Tateno 2.3 2.3 https://github.com/vimpr/vimperator-plugins/raw/master/vimp_to_android_phone.js ; (function() { var apiVersion = '3'; var base = 'http://chrometophone.appspot.com'; var baseURL = base + '/send?ver=' + apiVersion; var signInURL = base + '/signin?extret=about:blankZ&ver=' + apiVersion; var signOutURL = base + '/signout?extret=about:blankZ&ver=' + apiVersion; // var loginURL = 'https://www.google.com/accounts/ServiceLoginAuth?service=ah&sig=d71ef8b8d6150b23958ad03b3bf546b7'; var serialize = function(hash) { var res = []; for (var key in hash) { res.push(encodeURIComponent(key) + '=' + encodeURIComponent(hash[key])); } return res.join('&'); } var sendToPhone = function(requestURL) { requestURL = baseURL + '&' + requestURL; var req = new libly.Request(requestURL, { 'Content-Type': 'application/x-www-form-urlencoded', 'X-Extension': 'true' }); req.addEventListener('success', function(res) { var body = res.responseText; if (body.substring(0, 2) == 'OK') { liberator.echo('Send to phone successed.'); } else if (body.indexOf('LOGIN_REQUIRED' == 0)) { liberator.echo('Please login first'); liberator.open(signInURL, liberator.NEW_TAB); } else if (body.indexOf('DEVICE_NOT_REGISTERED') == 0) { liberator.echo('device not registered'); liberator.open(signOutURL, liberator.NEW_TAB); } }); req.addEventListener('failure', function(res) { liberator.echoerr('Send to phone failed.'); }); req.get(); } liberator.modules.commands.addUserCommand(["sp[hone]"], "Sent to your Android Phone", function(args) { if (args && args['-login']) { liberator.open(signInURL, liberator.NEW_TAB); return; } else if (args && args['-logout']) { liberator.open(signOutURL, liberator.NEW_TAB); return; } var req = { sel: libly.$U.getSelectedString() }; if (args && !args.arguments && !args['-title']) req.url = args[0]; else if (args && args.arguments) req.url = args.arguments[0]; if (args && args['-title']) req.title = args['-title']; else if (!req.url) req.title = content.document.title; if (!req.url) req.url = content.location.href; if (!req.title) req.title = req.url; if (!req.url || !req.url.match(/^https?/)) { liberator.echoerr('http/https schema only'); return; }; sendToPhone(serialize(req)); }, { options: [ [["-title", "-t"], liberator.modules.commands.OPTION_STRING], [["-login"], liberator.modules.commands.OPTION_NOARG], [["-logout"], liberator.modules.commands.OPTION_NOARG], ] }, { // replace: true }); })();