Station API

Dependents:   GMCStation

Revision:
2:a9d1a9c92927
Parent:
1:a22e390c70b3
--- a/SuperTweetClient.h	Mon Dec 12 02:33:21 2011 +0000
+++ b/SuperTweetClient.h	Mon Dec 12 11:41:24 2011 +0000
@@ -26,8 +26,19 @@
 #include "SimpleSocket.h"
 #include "Utils.h"
 
+/**
+ * Client API for accessing SuperTweet gateway
+ */
 class SuperTweetClient {
 public:
+    /**
+     * creates a SuperTweetClient object
+     *
+     * @param user user account
+     * @param password password (in plain text)
+     * @param messageTemplate message template for the tweet message
+     * @param verbose if true display debug info
+     */
     SuperTweetClient(char *user, char *password, char *messageTemplate, bool verbose = false)
             : verbose(verbose) {
         char buf[64];
@@ -36,34 +47,42 @@
         strcpy(this->messageTemplate, messageTemplate);
     }
 
-    SuperTweetClient(char *filename, bool verbose = false)
-            : verbose(verbose) {
-        char path[32];
-        LocalFileSystem local("local");
-        sprintf(path, "/local/%s", filename);
-
-        if (FILE *fp = fopen(path, "r")) {
-            char user[16], password[32];
-            Utils::fgetValues(fp, "user:%s", user);
-            Utils::fgetValues(fp, "password:%s", password);
-            Utils::fgetValues(fp, "message:%[^\r\n]", messageTemplate);
-            fclose(fp);
+    /**
+     * creates a SuperTweetCient object from a config file
+     *
+     * @param filename name of the configuration file
+     * @param verbose if true display debug info
+     */
+    static SuperTweetClient create(char *filename, bool verbose = false) {
+        char user[16], password[32], messageTemplate[420];
 
-            char buf[64];
-            sprintf(buf, "%s:%s", user, password);
-            Utils::encodeBase64(buf, credential);
+        if (filename) {
+            char path[32];
+            LocalFileSystem local("local");
+            sprintf(path, "/local/%s", filename);
+            if (FILE *fp = fopen(path, "r")) {
+                Utils::fgetValues(fp, "user:%s", user);
+                Utils::fgetValues(fp, "password:%s", password);
+                Utils::fgetValues(fp, "message:%[^\r\n]", messageTemplate);
+                fclose(fp);
 
-            if (verbose) {
-                ::printf("user = %s\n", user);
-                ::printf("password = %s\n", password);
-                ::printf("messageTemplate = %s\n", messageTemplate);
+                if (verbose) {
+                    printf("user = %s\n", user);
+                    printf("password = %s\n", password);
+                    printf("messageTemplate = %s\n", messageTemplate);
+                }
             }
+        }
 
-            strcpy(this->messageTemplate, messageTemplate);
-        } else
-            error("open error\n");
+        return SuperTweetClient(user, password, messageTemplate, verbose);
     }
 
+    /**
+     * tweets message
+     *
+     * @param format template format string, if empty string specified, messageTemplate specified in the constructor is to be used
+     * @param verbose if true display debug info
+     */
     bool tweet(char *format, ...) {
         va_list argv;
         va_start(argv, format);
@@ -90,8 +109,8 @@
             client.write(message2, length);
 
             if (verbose) {
-                ::printf(request, credential, length + 7);
-                ::printf("%s", message2);
+                printf(request, credential, length + 7);
+                printf("%s", message2);
             }
 
             while (client) {
@@ -102,7 +121,7 @@
                         if (!result && strncmp(response, "HTTP/1.1 200", 12) == 0)
                             result = true;
                         if (verbose)
-                            ::printf("%s", response);
+                            printf("%s", response);
                     }
                     client.close();
                 }