Station API
Diff: SuperTweetClient.h
- Revision:
- 2:a9d1a9c92927
- Parent:
- 1:a22e390c70b3
diff -r a22e390c70b3 -r a9d1a9c92927 SuperTweetClient.h --- 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(); }