]> ToastFreeware Gitweb - gregoa/bti.git/blobdiff - bti.c
Merge branch 'oauth-readme' of https://github.com/agimenez/bti into agimenez-oauth...
[gregoa/bti.git] / bti.c
diff --git a/bti.c b/bti.c
index 0229a9a75fdf7a09fa0bc86a5fb177aa72909ae2..4ad5b541052a2ce7115a1255fca341e98404e194 100644 (file)
--- a/bti.c
+++ b/bti.c
@@ -98,6 +98,7 @@ struct session {
        int dry_run;
        int page;
        int no_oauth;
        int dry_run;
        int page;
        int no_oauth;
+       int guest;
        enum host host;
        enum action action;
        void *readline_handle;
        enum host host;
        enum action action;
        void *readline_handle;
@@ -592,7 +593,7 @@ static int send_request(struct session *session)
        if (!session->hosturl)
                session->hosturl = strdup(twitter_host);
 
        if (!session->hosturl)
                session->hosturl = strdup(twitter_host);
 
-       if (session->no_oauth) {
+       if (session->no_oauth || session->guest) {
                curl_buf = bti_curl_buffer_alloc(session->action);
                if (!curl_buf)
                        return -ENOMEM;
                curl_buf = bti_curl_buffer_alloc(session->action);
                if (!curl_buf)
                        return -ENOMEM;
@@ -749,26 +750,29 @@ static int send_request(struct session *session)
                        break;
                }
 
                        break;
                }
 
-               if (is_post) {
-                       req_url = oauth_sign_url2(endpoint, &postarg, OA_HMAC,
-                                                 NULL, session->consumer_key,
-                                                 session->consumer_secret,
-                                                 session->access_token_key,
-                                                 session->access_token_secret);
-                       reply = oauth_http_post(req_url, postarg);
-               } else {
-                       req_url = oauth_sign_url2(endpoint, NULL, OA_HMAC, NULL,
-                                                 session->consumer_key,
-                                                 session->consumer_secret,
-                                                 session->access_token_key,
-                                                 session->access_token_secret);
-                       reply = oauth_http_get(req_url, postarg);
-               }
+               dbg("%s\n", endpoint);
+               if (!session->dry_run) {
+                       if (is_post) {
+                               req_url = oauth_sign_url2(endpoint, &postarg, OA_HMAC,
+                                                         NULL, session->consumer_key,
+                                                         session->consumer_secret,
+                                                         session->access_token_key,
+                                                         session->access_token_secret);
+                               reply = oauth_http_post(req_url, postarg);
+                       } else {
+                               req_url = oauth_sign_url2(endpoint, NULL, OA_HMAC, NULL,
+                                                         session->consumer_key,
+                                                         session->consumer_secret,
+                                                         session->access_token_key,
+                                                         session->access_token_secret);
+                               reply = oauth_http_get(req_url, postarg);
+                       }
 
 
-               dbg("%s\n", req_url);
-               dbg("%s\n", reply);
-               if (req_url)
-                       free(req_url);
+                       dbg("%s\n", req_url);
+                       dbg("%s\n", reply);
+                       if (req_url)
+                               free(req_url);
+               }
 
                if ((session->action != ACTION_UPDATE) &&
                                (session->action != ACTION_RETWEET))
 
                if ((session->action != ACTION_UPDATE) &&
                                (session->action != ACTION_RETWEET))
@@ -1544,11 +1548,17 @@ int main(int argc, char *argv[], char *envp[])
 
        if (session->host == HOST_TWITTER) {
                if (!session->consumer_key || !session->consumer_secret) {
 
        if (session->host == HOST_TWITTER) {
                if (!session->consumer_key || !session->consumer_secret) {
-                       fprintf(stderr,
-                               "Twitter no longer supports HTTP basic authentication.\n"
-                               "Both consumer key, and consumer secret are required"
-                               " for bti in order to behave as an OAuth consumer.\n");
-                       goto exit;
+                       if (session->action == ACTION_USER ||
+                                       session->action == ACTION_PUBLIC) {
+                               /* Some actions may still work without authentication */
+                               session->guest = 1;
+                       } else {
+                               fprintf(stderr,
+                                               "Twitter no longer supports HTTP basic authentication.\n"
+                                               "Both consumer key, and consumer secret are required"
+                                               " for bti in order to behave as an OAuth consumer.\n");
+                               goto exit;
+                       }
                }
                if (session->action == ACTION_GROUP) {
                        fprintf(stderr, "Groups only work in Identi.ca.\n");
                }
                if (session->action == ACTION_GROUP) {
                        fprintf(stderr, "Groups only work in Identi.ca.\n");
@@ -1570,7 +1580,7 @@ int main(int argc, char *argv[], char *envp[])
                                      session->hostname);
                        session->password = strdup(password);
                }
                                      session->hostname);
                        session->password = strdup(password);
                }
-       } else {
+       } else if (!session->guest) {
                if (!session->access_token_key ||
                    !session->access_token_secret) {
                        request_access_token(session);
                if (!session->access_token_key ||
                    !session->access_token_secret) {
                        request_access_token(session);