Created
September 17, 2008 18:01
-
-
Save fernandotakai/11270 to your computer and use it in GitHub Desktop.
Jaiku verb for Ubiquity
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const JAIKU_MAXLEN = 140; | |
Jaiku = { | |
addKey:function(key){ | |
if (!Application.prefs.has("jaiku_user_api_key")) { | |
Application.prefs.setValue("jaiku_user_api_key", key); | |
} else { | |
var new_key = Application.prefs.get("jaiku_user_api_key"); | |
new_key.value = key; | |
return new_key.value; | |
} | |
}, | |
addUsername:function(username){ | |
Application.prefs.setValue("jaiku_user_username", username); | |
}, | |
getUsername:function(){ | |
username = Application.prefs.get("jaiku_user_username"); | |
if(username){ | |
return username.value; | |
} else { | |
return "Username not set!" | |
} | |
}, | |
getKey:function(){ | |
return Application.prefs.get("jaiku_user_api_key").value; | |
}, | |
everythingIsOK:function(){ | |
return Application.prefs.has("jaiku_user_username") && Application.prefs.has("jaiku_user_api_key"); | |
} | |
}; | |
CmdUtils.CreateCommand({ | |
name: "jaiku-setuserandkey", | |
takes: {username: noun_arb_text}, | |
modifiers: {"api": noun_arb_text}, | |
icon:"http://jaiku.com/favicon.ico", | |
author: {name: "Fernando Takai", homepage: "http://fernandotakai.wordpress.com"}, | |
license: "MPL", | |
description: "Set your jaiku username and key. Check your key at http://api.jaiku.com", | |
help: "Type jaiku-setuserandkey <username> <apikey>. Check your key at http://api.jaiku.com", | |
execute: function(username, mods) { | |
if(username.text.length < 1) { | |
displayMessage("Please, enter your username"); | |
return; | |
} | |
var api = mods.api.text || "" | |
if(api.length < 1) { | |
displayMessage("Please, enter your api key"); | |
return; | |
} | |
Jaiku.addKey(mods.api.text); | |
Jaiku.addUsername(username.text); | |
displayMessage("Your username and api key has been set."); | |
} | |
}); | |
CmdUtils.CreateCommand({ | |
name: "jaiku", | |
takes: {status: noun_arb_text}, | |
modifiers : {"at":noun_type_geolocation}, | |
icon:"http://jaiku.com/favicon.ico", | |
author: {name: "Fernando Takai", homepage: "http://fernandotakai.wordpress.com"}, | |
license: "MPL", | |
description: "Post to Jaiku using Ubiquity", | |
help: "Type jaiku your message to post.", | |
preview: function(previewBlock, statusText) { | |
var previewTemplate = "Updates your Jaiku presence : <br/>" + | |
"<b>${status}</b> <br /><br />" + | |
"Characters remaining: <b>${chars}</b>"; | |
var truncateTemplate = "<br />The last <b>${truncate}</b> " + | |
"characters will be truncated!"; | |
var previewData = { | |
status: statusText.text, | |
chars: JAIKU_MAXLEN - statusText.text.length, | |
username: Jaiku.getUsername() | |
}; | |
var previewHTML = CmdUtils.renderTemplate(previewTemplate, | |
previewData); | |
if(previewData.chars < 0) { | |
var truncateData = { | |
truncate: 0 - previewData.chars | |
}; | |
previewHTML += CmdUtils.renderTemplate(truncateTemplate, | |
truncateData); | |
} | |
previewBlock.innerHTML = previewHTML; | |
}, | |
execute: function(statusText, mods) { | |
if(statusText.text.length < 1) { | |
displayMessage("Jaiku requires a status to be entered"); | |
return; | |
} | |
if (Jaiku.everythingIsOK()) { | |
var loc = ""; | |
if(mods.at.text){ | |
loc = mods.at.text; | |
} else { | |
var place = CmdUtils.getGeoLocation(); | |
loc = place.city + "," + place.country; | |
} | |
var updateUrl = "http://api.jaiku.com/jason"; | |
var status = statusText.text; | |
var updateParams = { | |
personal_key: Jaiku.getKey(), | |
user: Jaiku.getUsername(), | |
message: status, | |
method: "presence.send", | |
location: loc | |
}; | |
jQuery.ajax({ | |
type: "POST", | |
url: updateUrl, | |
data: updateParams, | |
dataType: "json", | |
error: function(msg) { | |
displayMessage("Jaiku error - status not updated"); | |
}, | |
success: function(msg) { | |
if(msg.status != "error"){ | |
displayMessage("Status updated!"); | |
} else { | |
displayMessage(msg.message); | |
} | |
} | |
}); | |
} else { | |
displayMessage("Please set your user api key with jaiku-setuserandkey"); | |
} | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment