Add Tag handler. Also convert all tabs to spaces.
[blerg.git] / www / jssrc / blerg / API.js
index 072eec5..1370234 100644 (file)
@@ -3,137 +3,169 @@ var baseURL = '';
 // The API state is static so that any instance can use login-dependent API
 // calls
 enyo.kind({
-       name: "blerg.API",
-       kind: "Component",
-       statics: {
-               apiInitialized: false,
-               loggedIn: false,
-               username: "",
-       },
-       create: function() {
-               this.inherited(arguments);
-               if (blerg.API.apiInitialized) {
-                       if (blerg.API.loggedIn) {
-                               setTimeout(function() {
-                                       this.bubble('onLoginSuccessful', {username: blerg.API.username});
-                               }.bind(this), 0);
-                       }
-                       return;
-               }
+    name: "blerg.API",
+    kind: "Component",
+    statics: {
+        apiInitialized: false,
+        loggedIn: false,
+        username: "",
+    },
+    create: function() {
+        this.inherited(arguments);
+        if (blerg.API.apiInitialized) {
+            if (blerg.API.loggedIn) {
+                setTimeout(function() {
+                    this.bubble('onLoginSuccessful', {username: blerg.API.username});
+                }.bind(this), 0);
+            }
+            return;
+        }
 
-               if (enyo.getCookie('auth') && enyo.getCookie('username')) {
-                       blerg.API.loggedIn = true;
-                       blerg.API.username = enyo.getCookie('username');
-                       // Defer the signal until everything's initialized
-                       setTimeout(function() {
-                               this.bubble('onLoginSuccessful', {username: blerg.API.username});
-                       }.bind(this), 0);
-               }
+        if (enyo.getCookie('auth') && enyo.getCookie('username')) {
+            blerg.API.loggedIn = true;
+            blerg.API.username = enyo.getCookie('username');
+            // Defer the signal until everything's initialized
+            setTimeout(function() {
+                this.bubble('onLoginSuccessful', {username: blerg.API.username});
+            }.bind(this), 0);
+        }
 
-               blerg.API.apiInitialized = true;
-       },
-       login: function(username, password) {
-               var req = new enyo.Ajax({
-                       url: baseURL + '/login',
-                       method: 'POST'
-               });
-               req.response(function(inSender, inResponse) {
-                       if (inResponse.status == 'success') {
-                               blerg.API.loggedIn = true;
-                               blerg.API.username = username;
-                               enyo.setCookie('username', username);
-                               this.bubble('onLoginSuccessful', {username: username});
-                       } else {
-                               enyo.setCookie('username', '', {"Max-Age": 0});
-                               this.bubble('onLoginFailed');
-                       }
-               }.bind(this));
-               req.go({
-                       username: username,
-                       password: password
-               });
-       },
-       logout: function() {
-               var req = new enyo.Ajax({
-                       url: baseURL + '/logout',
-                       method: 'POST'
-               });
-               req.response(function(inSender, inResponse) {
-                       blerg.API.loggedIn = false;
-                       enyo.setCookie('auth', '', {"Max-Age": 0});
-                       this.bubble('onLogoutSuccessful');
-               }.bind(this));
-               req.go({
-                       username: blerg.API.username
-               });
-               enyo.setCookie('username', '', {"Max-Age": 0});
-       },
-       requestFeedStatus: function() {
-               if (!blerg.API.loggedIn)
-                       throw new Error('Cannot request feed status when not logged in');
-               // TODO
-       },
-       loadUserRecords: function(username, from ,to) {
-               var url;
-               if (from != undefined && to != undefined) {
-                       url = baseURL +  '/get/' + username + '/' + from + '-' + to;
-               } else {
-                       url = baseURL +  '/get/' + username;
-               }
+        blerg.API.apiInitialized = true;
+    },
+    login: function(username, password) {
+        var req = new enyo.Ajax({
+            url: baseURL + '/login',
+            method: 'POST'
+        });
+        req.response(function(inSender, inResponse) {
+            if (inResponse.status == 'success') {
+                blerg.API.loggedIn = true;
+                blerg.API.username = username;
+                enyo.setCookie('username', username);
+                this.bubble('onLoginSuccessful', {username: username});
+            } else {
+                enyo.setCookie('username', '', {"Max-Age": 0});
+                this.bubble('onLoginFailed');
+            }
+        }.bind(this));
+        req.go({
+            username: username,
+            password: password
+        });
+    },
+    logout: function() {
+        var req = new enyo.Ajax({
+            url: baseURL + '/logout',
+            method: 'POST'
+        });
+        req.response(function(inSender, inResponse) {
+            blerg.API.loggedIn = false;
+            enyo.setCookie('auth', '', {"Max-Age": 0});
+            this.bubble('onLogoutSuccessful');
+        }.bind(this));
+        req.go({
+            username: blerg.API.username
+        });
+        enyo.setCookie('username', '', {"Max-Age": 0});
+    },
+    requestFeedStatus: function() {
+        if (!blerg.API.loggedIn)
+            throw new Error('Cannot request feed status when not logged in');
+        // TODO
+    },
+    loadUserRecords: function(username, from ,to) {
+        var url;
+        if (from != undefined && to != undefined) {
+            url = baseURL +  '/get/' + username + '/' + from + '-' + to;
+        } else {
+            url = baseURL +  '/get/' + username;
+        }
 
-               var req = new enyo.Ajax({
-                       url: url
-               });
-               req.response(function(inSender, inResponse) {
-                       this.bubble('onItemsLoaded', {
-                               entries: inResponse
-                       });
-               }.bind(this));
-               req.go();
-       },
-       getSubscriptionStatus: function(username) {
-               var req = new enyo.Ajax({
-                       url: baseURL + '/feedinfo/' + username,
-                       method: 'POST'
-               });
-               req.response(function(inSender, inResponse) {
-                       this.bubble('onSubscriptionStatus', {
-                               username: username,
-                               subscribed: inResponse.subscribed
-                       });
-               }.bind(this));
-               req.go({
-                       username: blerg.API.username
-               });
-       },
-       subscribe: function(username) {
-               var req = new enyo.Ajax({
-                       url: baseURL + '/subscribe/' + username,
-                       method: 'POST'
-               });
-               req.response(function(inSender, inResponse) {
-                       this.bubble('onSubscriptionStatus', {
-                               username: username,
-                               subscribed: inResponse.status == "success"
-                       });
-               }.bind(this));
-               req.go({
-                       username: blerg.API.username
-               });
-       },
-       unsubscribe: function(username) {
-               var req = new enyo.Ajax({
-                       url: baseURL + '/unsubscribe/' + username,
-                       method: 'POST'
-               });
-               req.response(function(inSender, inResponse) {
-                       this.bubble('onSubscriptionStatus', {
-                               username: username,
-                               subscribed: inResponse.status != "success"
-                       });
-               }.bind(this));
-               req.go({
-                       username: blerg.API.username
-               });
-       },
+        var req = new enyo.Ajax({
+            url: url
+        });
+        req.response(function(inSender, inResponse) {
+            this.bubble('onItemsLoaded', {
+                type: 'user',
+                username: username,
+                from: from,
+                to: to,
+                entries: inResponse
+            });
+        }.bind(this));
+        req.go();
+    },
+    loadTagRecords: function(type, tag) {
+        var url;
+        switch(type) {
+            case 'tag':
+                // Apache eats the hash, even encoded.  Probably a security
+                // feature.
+                url = baseURL + '/tag/H' + tag;
+                break;
+            case 'ref':
+                url = baseURL + '/tag/%40' + tag;
+                break;
+            default:
+                throw new Error("Invalid tag type: " + type);
+                return;
+        }
+        var req = new enyo.Ajax({
+            url: url
+        });
+        req.response(function(inSender, inResponse) {
+            this.bubble('onItemsLoaded', {
+                type: 'tag',
+                tagType: type,
+                tag: tag,
+                entries: inResponse
+            });
+        }.bind(this));
+        req.go();
+    },
+    getSubscriptionStatus: function(username) {
+        var req = new enyo.Ajax({
+            url: baseURL + '/feedinfo/' + username,
+            method: 'POST'
+        });
+        req.response(function(inSender, inResponse) {
+            this.bubble('onSubscriptionStatus', {
+                username: username,
+                subscribed: inResponse.subscribed
+            });
+        }.bind(this));
+        req.go({
+            username: blerg.API.username
+        });
+    },
+    subscribe: function(username) {
+        var req = new enyo.Ajax({
+            url: baseURL + '/subscribe/' + username,
+            method: 'POST'
+        });
+        req.response(function(inSender, inResponse) {
+            this.bubble('onSubscriptionStatus', {
+                username: username,
+                subscribed: inResponse.status == "success"
+            });
+        }.bind(this));
+        req.go({
+            username: blerg.API.username
+        });
+    },
+    unsubscribe: function(username) {
+        var req = new enyo.Ajax({
+            url: baseURL + '/unsubscribe/' + username,
+            method: 'POST'
+        });
+        req.response(function(inSender, inResponse) {
+            this.bubble('onSubscriptionStatus', {
+                username: username,
+                subscribed: inResponse.status != "success"
+            });
+        }.bind(this));
+        req.go({
+            username: blerg.API.username
+        });
+    },
 });