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

Committer:
ban4jp
Date:
Tue Jul 14 09:54:39 2015 +0000
Revision:
5:f0c0128cde62
Parent:
4:fcadeb9bdcbd
Child:
6:f5189d4f109f
a new example of the post API.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
geodenx 0:00a2d3570824 1 #include <string.h>
geodenx 0:00a2d3570824 2 #include "mbed.h"
ban4jp 1:4dfa9d41f414 3 #include "EthernetInterface.h"
ban4jp 1:4dfa9d41f414 4 #include "NTPClient.h"
geodenx 0:00a2d3570824 5 #include "OAuth4Tw.h"
geodenx 0:00a2d3570824 6
geodenx 0:00a2d3570824 7 DigitalOut myled(LED1);
ban4jp 1:4dfa9d41f414 8 EthernetInterface eth;
ban4jp 1:4dfa9d41f414 9 NTPClient ntp;
ban4jp 1:4dfa9d41f414 10
ban4jp 1:4dfa9d41f414 11 OAuth4Tw oa4t("XXXXXXXXXXXXXXXXXXXXXXXXX", // Consumer key
ban4jp 1:4dfa9d41f414 12 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", // Consumer secret
ban4jp 1:4dfa9d41f414 13 "000000000-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", // Access token
ban4jp 1:4dfa9d41f414 14 "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); // Access token secret
geodenx 0:00a2d3570824 15
ban4jp 5:f0c0128cde62 16 #if defined(TARGET_LPC1768)
ban4jp 5:f0c0128cde62 17 static char res_buffer[512];
ban4jp 5:f0c0128cde62 18 #elif defined(TARGET_K64F)
ban4jp 5:f0c0128cde62 19 static char res_buffer[4096];
ban4jp 5:f0c0128cde62 20 #else
ban4jp 5:f0c0128cde62 21 #error not tested platform.
ban4jp 5:f0c0128cde62 22 #endif
ban4jp 4:fcadeb9bdcbd 23
ban4jp 1:4dfa9d41f414 24 int main()
ban4jp 1:4dfa9d41f414 25 {
ban4jp 1:4dfa9d41f414 26 int ret = eth.init(); //Use DHCP
ban4jp 1:4dfa9d41f414 27 if (!ret) {
ban4jp 1:4dfa9d41f414 28 printf("Initialized, MAC: %s\n", eth.getMACAddress());
ban4jp 1:4dfa9d41f414 29 } else {
ban4jp 1:4dfa9d41f414 30 printf("Error eth.init() - ret = %d\n", ret);
geodenx 0:00a2d3570824 31 return -1;
geodenx 0:00a2d3570824 32 }
geodenx 0:00a2d3570824 33
ban4jp 1:4dfa9d41f414 34 ret = eth.connect();
ban4jp 1:4dfa9d41f414 35 if (!ret) {
ban4jp 1:4dfa9d41f414 36 printf("Connected, IP: %s, MASK: %s, GW: %s\n",
ban4jp 1:4dfa9d41f414 37 eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway());
ban4jp 1:4dfa9d41f414 38 } else {
ban4jp 1:4dfa9d41f414 39 printf("Error eth.connect() - ret = %d\n", ret);
ban4jp 1:4dfa9d41f414 40 return -1;
ban4jp 1:4dfa9d41f414 41 }
ban4jp 1:4dfa9d41f414 42
ban4jp 4:fcadeb9bdcbd 43
ban4jp 1:4dfa9d41f414 44 printf("Trying to update time...\n");
ban4jp 1:4dfa9d41f414 45
ban4jp 2:392b8e079c7a 46 time_t ctTime;
ban4jp 2:392b8e079c7a 47 NTPResult result;
ban4jp 2:392b8e079c7a 48
ban4jp 4:fcadeb9bdcbd 49 while (1) {
ban4jp 2:392b8e079c7a 50 result = ntp.setTime("pool.ntp.org");
ban4jp 2:392b8e079c7a 51 //result = ntp.setTime("pool.ntp.org", NTP_DEFAULT_PORT, 2000);
ban4jp 2:392b8e079c7a 52
ban4jp 2:392b8e079c7a 53 if (result == NTP_OK) {
ban4jp 2:392b8e079c7a 54 time(&ctTime);
ban4jp 2:392b8e079c7a 55 printf("Time is set to (UTC): %s\n", ctime(&ctTime));
ban4jp 2:392b8e079c7a 56 break;
ban4jp 2:392b8e079c7a 57 }
ban4jp 2:392b8e079c7a 58
ban4jp 2:392b8e079c7a 59 switch (result) {
ban4jp 2:392b8e079c7a 60 case NTP_CONN: ///<Connection error
ban4jp 2:392b8e079c7a 61 printf("Connection error\n");
ban4jp 2:392b8e079c7a 62 break;
ban4jp 2:392b8e079c7a 63 case NTP_TIMEOUT: ///<Connection timeout
ban4jp 2:392b8e079c7a 64 printf("Connection timeout\n");
ban4jp 2:392b8e079c7a 65 break;
ban4jp 2:392b8e079c7a 66 case NTP_PRTCL: ///<Protocol error
ban4jp 2:392b8e079c7a 67 printf("Protocol error\n");
ban4jp 2:392b8e079c7a 68 break;
ban4jp 2:392b8e079c7a 69 case NTP_DNS: ///<Could not resolve name
ban4jp 2:392b8e079c7a 70 printf("Could not resolve name\n");
ban4jp 2:392b8e079c7a 71 break;
ban4jp 2:392b8e079c7a 72 default:
ban4jp 2:392b8e079c7a 73 printf("Error result=%d\n", result);
ban4jp 2:392b8e079c7a 74 return -1;
ban4jp 2:392b8e079c7a 75 }
ban4jp 2:392b8e079c7a 76
ban4jp 2:392b8e079c7a 77 wait(5);
ban4jp 1:4dfa9d41f414 78 }
ban4jp 1:4dfa9d41f414 79
ban4jp 4:fcadeb9bdcbd 80
ban4jp 4:fcadeb9bdcbd 81 HTTPText res(res_buffer, sizeof(res_buffer));
geodenx 0:00a2d3570824 82
geodenx 0:00a2d3570824 83 while (1) {
ban4jp 5:f0c0128cde62 84 #if 0
ban4jp 4:fcadeb9bdcbd 85 {
ban4jp 4:fcadeb9bdcbd 86 char url[128];
ban4jp 4:fcadeb9bdcbd 87
ban4jp 4:fcadeb9bdcbd 88 time(&ctTime);
ban4jp 4:fcadeb9bdcbd 89
ban4jp 4:fcadeb9bdcbd 90 snprintf(url, sizeof(url),
ban4jp 4:fcadeb9bdcbd 91 "https://api.twitter.com/1.1/statuses/update.json"
ban4jp 4:fcadeb9bdcbd 92 "?status=Hello World! - %s", ctime(&ctTime));
ban4jp 4:fcadeb9bdcbd 93
ban4jp 5:f0c0128cde62 94 res_buffer[0] = '\0';
ban4jp 5:f0c0128cde62 95 HTTPResult result = oa4t.post(url, &res);
ban4jp 4:fcadeb9bdcbd 96 printf("POST result = %d\n%s\n", result, res_buffer);
ban4jp 4:fcadeb9bdcbd 97 }
ban4jp 5:f0c0128cde62 98 #else
ban4jp 5:f0c0128cde62 99 {
ban4jp 5:f0c0128cde62 100 std::vector<std::string> post;
ban4jp 5:f0c0128cde62 101 post.reserve(3);
ban4jp 5:f0c0128cde62 102
ban4jp 5:f0c0128cde62 103 char status[64];
ban4jp 5:f0c0128cde62 104 char location_lat[24];
ban4jp 5:f0c0128cde62 105 char location_long[24];
ban4jp 5:f0c0128cde62 106
ban4jp 5:f0c0128cde62 107 time(&ctTime);
ban4jp 5:f0c0128cde62 108
ban4jp 5:f0c0128cde62 109 snprintf(status, sizeof(status), "status=Hello Fujiyama! - %s", ctime(&ctTime));
ban4jp 5:f0c0128cde62 110 snprintf(location_lat, sizeof(location_lat), "lat=%f", 35.359577);
ban4jp 5:f0c0128cde62 111 snprintf(location_long, sizeof(location_long), "long=%f", 138.731414);
ban4jp 5:f0c0128cde62 112 post.push_back(status);
ban4jp 5:f0c0128cde62 113 post.push_back(location_lat);
ban4jp 5:f0c0128cde62 114 post.push_back(location_long);
ban4jp 5:f0c0128cde62 115
ban4jp 5:f0c0128cde62 116 res_buffer[0] = '\0';
ban4jp 5:f0c0128cde62 117 HTTPResult result = oa4t.post("https://api.twitter.com/1.1/statuses/update.json", &post, &res);
ban4jp 5:f0c0128cde62 118 printf("POST result = %d\n%s\n", result, res_buffer);
ban4jp 5:f0c0128cde62 119 }
ban4jp 5:f0c0128cde62 120 #endif
ban4jp 4:fcadeb9bdcbd 121
ban4jp 4:fcadeb9bdcbd 122 {
ban4jp 4:fcadeb9bdcbd 123 const char url[] = "https://api.twitter.com/1.1/users/show.json"
ban4jp 4:fcadeb9bdcbd 124 "?screen_name=twitter";
ban4jp 4:fcadeb9bdcbd 125
ban4jp 5:f0c0128cde62 126 res_buffer[0] = '\0';
ban4jp 4:fcadeb9bdcbd 127 HTTPResult result = oa4t.get(url, &res);
ban4jp 4:fcadeb9bdcbd 128 printf("GET result = %d\n%s\n", result, res_buffer);
ban4jp 4:fcadeb9bdcbd 129 }
ban4jp 4:fcadeb9bdcbd 130
ban4jp 5:f0c0128cde62 131 // Wait 60 seconds for next time.
ban4jp 5:f0c0128cde62 132 for (int t=0; t<60; t++) {
ban4jp 4:fcadeb9bdcbd 133 myled = 1;
ban4jp 4:fcadeb9bdcbd 134 wait(0.2);
ban4jp 4:fcadeb9bdcbd 135 myled = 0;
ban4jp 4:fcadeb9bdcbd 136 wait(0.8);
ban4jp 4:fcadeb9bdcbd 137 }
ban4jp 4:fcadeb9bdcbd 138
ban4jp 4:fcadeb9bdcbd 139 printf("\n");
geodenx 0:00a2d3570824 140 }
geodenx 0:00a2d3570824 141 }