Revisions

gist: 11270 Download_button fork
public
Description:
Jaiku verb for Ubiquity
Public Clone URL: git://gist.github.com/11270.git
Embed All Files: show embed
JavaScript #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
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");
    }
  }
});