From 26faf57b8b7c7533c050c948c7c25742e0304d17 Mon Sep 17 00:00:00 2001 From: David Todd Date: Mon, 20 Oct 2014 20:42:17 -0500 Subject: [PATCH] Move from beta to version 1.0.1, comment out future API code The chrome extension won't work with the API key code (as I haven't added that to the API yet). Also included is the current copy of the chrome extension that's on the webstore --- lob.li crx/js/background.js | 44 +++++++++++++++--------------------- lob.li crx/manifest.json | 2 +- lob.li.zip | Bin 0 -> 20601 bytes 3 files changed, 19 insertions(+), 27 deletions(-) create mode 100644 lob.li.zip diff --git a/lob.li crx/js/background.js b/lob.li crx/js/background.js index 51cbf53..0ccc344 100644 --- a/lob.li crx/js/background.js +++ b/lob.li crx/js/background.js @@ -1,22 +1,5 @@ chrome.commands.onCommand.addListener(function(command){ // Keyboard shortcut trigger - Shorten current tab if(command == "shortenTab"){ - var disabled = getData("lobli-disabled"); - if(disabled == true){ - testAPIKey(); - }else{ - chrome.tabs.query({active: true, currentWindow: true}, function(tabs){ - var current = tabs[0] - shortenTabURL(current.id); - }); - } - } -}); - -chrome.browserAction.onClicked.addListener(function(tab){ // Shorten current tab when lobli icon pressed - var disabled = getData("lobli-disabled"); - if(disabled == true){ - testAPIKey(); - }else{ chrome.tabs.query({active: true, currentWindow: true}, function(tabs){ var current = tabs[0] shortenTabURL(current.id); @@ -24,6 +7,14 @@ chrome.browserAction.onClicked.addListener(function(tab){ // Shorten current tab } }); +chrome.browserAction.onClicked.addListener(function(tab){ // Shorten current tab when lobli icon pressed + chrome.tabs.query({active: true, currentWindow: true}, function(tabs){ + var current = tabs[0] + shortenTabURL(current.id); + }); +}); + +/* // Incomplete functions chrome.runtime.onInstalled.addLIstener(function(data){ // Get a new API key from the get go if(data.reason == "install"){ getNewAPIKey(); @@ -38,9 +29,10 @@ chrome.runtime.onStartup.addListener(function(){ // Check to see if extension is testAPIKey(); } }); +*/ function showAlert(text){ - var opt ={ + var opt = { type: "basic", title: "lob.li Chrome", message: text, @@ -70,8 +62,8 @@ function shortenTabURL(tabid){ // Use just a tab id to shorten its url function shortenURL(url){ // Creates a short url and copies it to clipboard if(testURL(url)){ - var key = getData("lobliAPIKey"); - sendAPIRequest("?shorten&url=" + url + "&key=" + key, function(req){ + var url = encodeURIComponent(url); + sendAPIRequest("?shorten&url=" + url, function(req){ var res = req.responseText.trim(); switch(res){ case "dead": @@ -84,7 +76,7 @@ function shortenURL(url){ // Creates a short url and copies it to clipboard showAlert("General Error."); break; default: - copyToClipboard("http://b.lob.li/?"+res); + copyToClipboard("http://lob.li/"+res); showAlert("Link shortened. Short link copied to clipboard!"); break; } @@ -94,8 +86,7 @@ function shortenURL(url){ // Creates a short url and copies it to clipboard function resolveURL(url){ // For when/if I decide to add the ability to resolve links through the extension if(testURL(url)){ - var key = getData("lobliAPIKey"); - sendAPIRequest("?resolve&url=" + url + "&key=" + key, function(req){ + sendAPIRequest("?resolve&url=" + url, function(req){ var res = req.responseText.trim(); copyToClipboard(res); showAlert("Link Resolved!\n" + res); @@ -105,14 +96,14 @@ function resolveURL(url){ // For when/if I decide to add the ability to resolve function linkStats(url){ // Get stats to that specific link (context menu?) if(testURL(url)){ - var key = getData("lobliAPIKey"); - sendAPIRequest("?stats&url=" + url + "&key=" + key, function(req){ + sendAPIRequest("?stats&url=" + url, function(req){ var res = req.responseText.trim(); // format this info and make a popup window }); } } +/* // These functions are also incomplete function testAPIKey(){ // Compares local key to server var key = getData("lobliAPIKey"); if(key != undefined){ @@ -154,11 +145,12 @@ function getData(key){ return data; }); } +*/ function sendAPIRequest(url, callback){ // Sends a GET request to the server, response is expected to be text and only short id, or resolved link var method = "GET"; var req = new XMLHttpRequest(); - req.open(method, "http://b.lob.li/ch/" + url, true); + req.open(method, "http://api.lob.li/" + url, true); req.onload = function(){ callback(req); }; diff --git a/lob.li crx/manifest.json b/lob.li crx/manifest.json index 29092f0..4ed95d9 100644 --- a/lob.li crx/manifest.json +++ b/lob.li crx/manifest.json @@ -1,6 +1,6 @@ { "name": "lob.li link shortener", - "version": "0.0.1", + "version": "1.0.1", "manifest_version": 2, "description": "lobli shortening and resolving without having to visit lob.li", "homepage_url": "http://lob.li", diff --git a/lob.li.zip b/lob.li.zip new file mode 100644 index 0000000000000000000000000000000000000000..d4a120700f27dbc14edd8810f750dfd6816e74df GIT binary patch literal 20601 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