af0e348e |
function getCurrentTabUrl() {
var queryInfo = {active: true, currentWindow: true};
var d = $.Deferred();
chrome.tabs.query(queryInfo, function(tabs) {
var tab = tabs[0];
var url = tab.url;
console.assert(typeof url == 'string', 'tab.url should be a string');
d.resolve(url, tab.title);
});
return d;
}
function getStoredCreds() {
var d = $.Deferred();
chrome.storage.sync.get({
username: '',
password: ''
}, function (items) {
d.resolve(items.username, items.password);
});
return d;
}
function authenticateMarrow() {
var d = $.Deferred();
getStoredCreds().done(function (username, password) {
if (username === '') {
renderStatus('Fail :(');
return;
}
var postData = {"username":username,"password":password};
return $.ajax('http://marrow.elangley.org/api/user/login?ak=1', {
data: JSON.stringify(postData),
contentType: 'application/json',
type: 'POST',
dataType: 'json'
}).done(function(r) { d.resolve(username, r.ak); });
});
return d;
}
function postURL(url, title, username, ak) {
var urlObj = JSON.stringify({"url": url, "title": title, "username": username, "ak": ak});
var addUrl = 'http://marrow.elangley.org/api/bones/add';
return $.ajax(addUrl, {
data: urlObj,
contentType: 'application/json',
type: 'POST',
dataType: 'json'
});
}
var commandHandlers = {
share_page: function() {
var notification = chrome.notifications.create('share', {
type: "progress",
title: "Add to Marrow",
message: "Posting",
iconUrl: "marrow_app_128px.png"
});
authenticateMarrow().done(function(username, ak) {
getCurrentTabUrl().done(function(url, title) {
chrome.notifications.update('share', {progress: 50, message: "Posting '"+title+"'"});
postURL(url, title, username, ak)
.done(function() {
chrome.notifications.update('share', {progress: 100});
});
});
});
}
};
chrome.commands.onCommand.addListener(function(command) {
console.log('Command:' + command);
if (commandHandlers[command] !== undefined) {
commandHandlers[command]();
}
});
|