]> ToastFreeware Gitweb - gregoa/bti.git/blobdiff - bti.c
Updating documents
[gregoa/bti.git] / bti.c
diff --git a/bti.c b/bti.c
index 1fc7ac8263c34997489279f92fe17c7c62fafbd6..8243ad7755ceb2719435a6d43922546c42201425 100644 (file)
--- a/bti.c
+++ b/bti.c
@@ -52,9 +52,10 @@ enum host {
 
 enum action {
        ACTION_UPDATE = 0,
 
 enum action {
        ACTION_UPDATE = 0,
-       ACTION_PUBLIC = 1,
+       ACTION_FRIENDS = 1,
        ACTION_USER = 2,
        ACTION_USER = 2,
-       ACTION_FRIENDS = 4
+       ACTION_REPLIES = 4,
+       ACTION_PUBLIC = 8
 };
 
 struct session {
 };
 
 struct session {
@@ -79,19 +80,20 @@ struct bti_curl_buffer {
 
 static void display_help(void)
 {
 
 static void display_help(void)
 {
-       fprintf(stdout, "bti - send tweet to twitter\n");
+       fprintf(stdout, "bti - send tweet to twitter or identi.ca\n");
        fprintf(stdout, "Version: " BTI_VERSION "\n");
        fprintf(stdout, "Usage:\n");
        fprintf(stdout, "  bti [options]\n");
        fprintf(stdout, "options are:\n");
        fprintf(stdout, "  --account accountname\n");
        fprintf(stdout, "  --password password\n");
        fprintf(stdout, "Version: " BTI_VERSION "\n");
        fprintf(stdout, "Usage:\n");
        fprintf(stdout, "  bti [options]\n");
        fprintf(stdout, "options are:\n");
        fprintf(stdout, "  --account accountname\n");
        fprintf(stdout, "  --password password\n");
+       fprintf(stdout, "  --action action\n");
+       fprintf(stdout, "    ('update', 'friends', 'public', 'replies' or 'user')\n");
+       fprintf(stdout, "  --user screenname\n");
        fprintf(stdout, "  --proxy PROXY:PORT\n");
        fprintf(stdout, "  --host HOST\n");
        fprintf(stdout, "  --logfile logfile\n");
        fprintf(stdout, "  --bash\n");
        fprintf(stdout, "  --proxy PROXY:PORT\n");
        fprintf(stdout, "  --host HOST\n");
        fprintf(stdout, "  --logfile logfile\n");
        fprintf(stdout, "  --bash\n");
-       fprintf(stdout, "  --action action\n");
-       fprintf(stdout, "  --user screenname\n");
        fprintf(stdout, "  --debug\n");
        fprintf(stdout, "  --version\n");
        fprintf(stdout, "  --help\n");
        fprintf(stdout, "  --debug\n");
        fprintf(stdout, "  --version\n");
        fprintf(stdout, "  --help\n");
@@ -154,15 +156,17 @@ static void bti_curl_buffer_free(struct bti_curl_buffer *buffer)
        free(buffer);
 }
 
        free(buffer);
 }
 
+static const char *twitter_user_url    = "http://twitter.com/statuses/user_timeline/";
 static const char *twitter_update_url  = "https://twitter.com/statuses/update.xml";
 static const char *twitter_public_url  = "http://twitter.com/statuses/public_timeline.xml";
 static const char *twitter_friends_url = "https://twitter.com/statuses/friends_timeline.xml";
 static const char *twitter_update_url  = "https://twitter.com/statuses/update.xml";
 static const char *twitter_public_url  = "http://twitter.com/statuses/public_timeline.xml";
 static const char *twitter_friends_url = "https://twitter.com/statuses/friends_timeline.xml";
-static const char *twitter_user_url    = "http://twitter.com/statuses/user_timeline/";
+static const char *twitter_replies_url = "http://twitter.com/statuses/replies.xml";
 
 
+static const char *identica_user_url    = "http://identi.ca/api/statuses/user_timeline/";
 static const char *identica_update_url  = "http://identi.ca/api/statuses/update.xml";
 static const char *identica_public_url  = "http://identi.ca/api/statuses/public_timeline.xml";
 static const char *identica_friends_url = "http://identi.ca/api/statuses/friends_timeline.xml";
 static const char *identica_update_url  = "http://identi.ca/api/statuses/update.xml";
 static const char *identica_public_url  = "http://identi.ca/api/statuses/public_timeline.xml";
 static const char *identica_friends_url = "http://identi.ca/api/statuses/friends_timeline.xml";
-static const char *identica_user_url    = "http://identi.ca/api/statuses/user_timeline/";
+static const char *identica_replies_url = "http://identi.ca/api/statuses/replies.xml";
 
 static CURL *curl_init(void)
 {
 
 static CURL *curl_init(void)
 {
@@ -354,6 +358,20 @@ static int send_request(struct session *session)
                        break;
                }
 
                        break;
                }
 
+               break;
+       case ACTION_REPLIES:
+               snprintf(user_password, sizeof(user_password), "%s:%s",
+                        session->account, session->password);
+               switch (session->host) {
+               case HOST_TWITTER:
+                       curl_easy_setopt(curl, CURLOPT_URL, twitter_replies_url);
+                       break;
+               case HOST_IDENTICA:
+                       curl_easy_setopt(curl, CURLOPT_URL, identica_replies_url);
+                       break;
+               }
+               curl_easy_setopt(curl, CURLOPT_USERPWD, user_password);
+
                break;
        case ACTION_PUBLIC:
                switch (session->host) {
                break;
        case ACTION_PUBLIC:
                switch (session->host) {
@@ -499,6 +517,8 @@ static void parse_configfile(struct session *session)
                        session->action = ACTION_FRIENDS;
                if (strcasecmp(action, "user") == 0)
                        session->action = ACTION_USER;
                        session->action = ACTION_FRIENDS;
                if (strcasecmp(action, "user") == 0)
                        session->action = ACTION_USER;
+               if (strcasecmp(action, "replies") == 0)
+                       session->action = ACTION_REPLIES;
                if (strcasecmp(action, "public") == 0)
                        session->action = ACTION_PUBLIC;
                free(action);
                if (strcasecmp(action, "public") == 0)
                        session->action = ACTION_PUBLIC;
                free(action);
@@ -542,19 +562,31 @@ static void log_session(struct session *session, int retval)
                break;
        }
 
                break;
        }
 
-       if (session->action == ACTION_UPDATE) {
+       switch (session->action) {
+       case ACTION_UPDATE:
                if (retval)
                        fprintf(log_file, "%s: host=%s tweet failed\n",
                                session->time, host);
                else
                        fprintf(log_file, "%s: host=%s tweet=%s\n",
                                session->time, host, session->tweet);
                if (retval)
                        fprintf(log_file, "%s: host=%s tweet failed\n",
                                session->time, host);
                else
                        fprintf(log_file, "%s: host=%s tweet=%s\n",
                                session->time, host, session->tweet);
-       } else if (session->action == ACTION_FRIENDS) {
+               break;
+       case ACTION_FRIENDS:
                fprintf(log_file, "%s: host=%s retrieving friends timeline\n",
                        session->time, host);
                fprintf(log_file, "%s: host=%s retrieving friends timeline\n",
                        session->time, host);
-       } else if (session->action == ACTION_PUBLIC) {
+               break;
+       case ACTION_USER:
+               fprintf(log_file, "%s: host=%s retrieving %s's timeline\n",
+                       session->time, host, session->user);
+               break;
+       case ACTION_REPLIES:
+               fprintf(log_file, "%s: host=%s retrieving replies\n",
+                       session->time, host);
+               break;
+       case ACTION_PUBLIC:
                fprintf(log_file, "%s: host=%s retrieving public timeline\n",
                        session->time, host);
                fprintf(log_file, "%s: host=%s retrieving public timeline\n",
                        session->time, host);
+               break;
        }
 
        fclose(log_file);
        }
 
        fclose(log_file);
@@ -648,6 +680,8 @@ int main(int argc, char *argv[], char *envp[])
                                session->action = ACTION_FRIENDS;
                        if (strcasecmp(optarg, "user") == 0)
                                session->action = ACTION_USER;
                                session->action = ACTION_FRIENDS;
                        if (strcasecmp(optarg, "user") == 0)
                                session->action = ACTION_USER;
+                       if (strcasecmp(optarg, "replies") == 0)
+                               session->action = ACTION_REPLIES;
                        if (strcasecmp(optarg, "public") == 0)
                                session->action = ACTION_PUBLIC;
                        dbg("action = %d\n", session->action);
                        if (strcasecmp(optarg, "public") == 0)
                                session->action = ACTION_PUBLIC;
                        dbg("action = %d\n", session->action);