Twitter client that can be directly tweet. (Intermediate server is not required.)

Dependencies:   EthernetInterface HTTPClient-wolfSSL NTPClient OAuth4Tw mbed-rtos mbed wolfSSL

Fork of OAuth4Tw by Atsuya Okazaki

main.cpp

Committer:
ban4jp
Date:
2015-07-08
Revision:
4:fcadeb9bdcbd
Parent:
2:392b8e079c7a
Child:
5:f0c0128cde62

File content as of revision 4:fcadeb9bdcbd:

#include <string.h>
#include "mbed.h"
#include "EthernetInterface.h"
#include "NTPClient.h"
#include "OAuth4Tw.h"

DigitalOut myled(LED1);
EthernetInterface eth;
NTPClient ntp;

OAuth4Tw oa4t("XXXXXXXXXXXXXXXXXXXXXXXXX",                          // Consumer key
              "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", // Consumer secret
              "000000000-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", // Access token
              "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");     // Access token secret

static char res_buffer[1024] = "";

int main()
{
    int ret = eth.init(); //Use DHCP
    if (!ret) {
        printf("Initialized, MAC: %s\n", eth.getMACAddress());
    } else {
        printf("Error eth.init() - ret = %d\n", ret);
        return -1;
    }

    ret = eth.connect();
    if (!ret) {
        printf("Connected, IP: %s, MASK: %s, GW: %s\n",
               eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway());
    } else {
        printf("Error eth.connect() - ret = %d\n", ret);
        return -1;
    }


    printf("Trying to update time...\n");

    time_t ctTime;
    NTPResult result;

    while (1) {
        result = ntp.setTime("pool.ntp.org");
        //result = ntp.setTime("pool.ntp.org", NTP_DEFAULT_PORT, 2000);

        if (result == NTP_OK) {
            time(&ctTime);
            printf("Time is set to (UTC): %s\n", ctime(&ctTime));
            break;
        }

        switch (result) {
            case NTP_CONN:      ///<Connection error
                printf("Connection error\n");
                break;
            case NTP_TIMEOUT:   ///<Connection timeout
                printf("Connection timeout\n");
                break;
            case NTP_PRTCL:     ///<Protocol error
                printf("Protocol error\n");
                break;
            case NTP_DNS:       ///<Could not resolve name
                printf("Could not resolve name\n");
                break;
            default:
                printf("Error result=%d\n", result);
                return -1;
        }

        wait(5);
    }


    HTTPText res(res_buffer, sizeof(res_buffer));

    while (1) {
        {
            char url[128];
            char post[128]; //TODO: fix required. need saving memory.

            time(&ctTime);

            snprintf(url, sizeof(url),
                     "https://api.twitter.com/1.1/statuses/update.json"
                     "?status=Hello World! - %s", ctime(&ctTime));

            HTTPResult result = oa4t.post(url, post, &res);
            printf("POST result = %d\n%s\n", result, res_buffer);
        }

        {
            const char url[] = "https://api.twitter.com/1.1/users/show.json"
                               "?screen_name=twitter";

            HTTPResult result = oa4t.get(url, &res);
            printf("GET result = %d\n%s\n", result, res_buffer);
        }

        // Wait 300 seconds for next time.
        for (int t=0; t<300; t++) {
            myled = 1;
            wait(0.2);
            myled = 0;
            wait(0.8);
        }

        printf("\n");
    }
}