Skip to content

Instantly share code, notes, and snippets.

@fernandotakai
Created September 17, 2008 18:01
Show Gist options
  • Save fernandotakai/11270 to your computer and use it in GitHub Desktop.
Save fernandotakai/11270 to your computer and use it in GitHub Desktop.
Jaiku verb for Ubiquity
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