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:
Wed Jul 08 14:55:36 2015 +0000
Revision:
4:fcadeb9bdcbd
Parent:
2:392b8e079c7a
Child:
5:f0c0128cde62
Add GET method API call examples.

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 4:fcadeb9bdcbd 16 static char res_buffer[1024] = "";
ban4jp 4:fcadeb9bdcbd 17
ban4jp 1:4dfa9d41f414 18 int main()
ban4jp 1:4dfa9d41f414 19 {
ban4jp 1:4dfa9d41f414 20 int ret = eth.init(); //Use DHCP
ban4jp 1:4dfa9d41f414 21 if (!ret) {
ban4jp 1:4dfa9d41f414 22 printf("Initialized, MAC: %s\n", eth.getMACAddress());
ban4jp 1:4dfa9d41f414 23 } else {
ban4jp 1:4dfa9d41f414 24 printf("Error eth.init() - ret = %d\n", ret);
geodenx 0:00a2d3570824 25 return -1;
geodenx 0:00a2d3570824 26 }
geodenx 0:00a2d3570824 27
ban4jp 1:4dfa9d41f414 28 ret = eth.connect();
ban4jp 1:4dfa9d41f414 29 if (!ret) {
ban4jp 1:4dfa9d41f414 30 printf("Connected, IP: %s, MASK: %s, GW: %s\n",
ban4jp 1:4dfa9d41f414 31 eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway());
ban4jp 1:4dfa9d41f414 32 } else {
ban4jp 1:4dfa9d41f414 33 printf("Error eth.connect() - ret = %d\n", ret);
ban4jp 1:4dfa9d41f414 34 return -1;
ban4jp 1:4dfa9d41f414 35 }
ban4jp 1:4dfa9d41f414 36
ban4jp 4:fcadeb9bdcbd 37
ban4jp 1:4dfa9d41f414 38 printf("Trying to update time...\n");
ban4jp 1:4dfa9d41f414 39
ban4jp 2:392b8e079c7a 40 time_t ctTime;
ban4jp 2:392b8e079c7a 41 NTPResult result;
ban4jp 2:392b8e079c7a 42
ban4jp 4:fcadeb9bdcbd 43 while (1) {
ban4jp 2:392b8e079c7a 44 result = ntp.setTime("pool.ntp.org");
ban4jp 2:392b8e079c7a 45 //result = ntp.setTime("pool.ntp.org", NTP_DEFAULT_PORT, 2000);
ban4jp 2:392b8e079c7a 46
ban4jp 2:392b8e079c7a 47 if (result == NTP_OK) {
ban4jp 2:392b8e079c7a 48 time(&ctTime);
ban4jp 2:392b8e079c7a 49 printf("Time is set to (UTC): %s\n", ctime(&ctTime));
ban4jp 2:392b8e079c7a 50 break;
ban4jp 2:392b8e079c7a 51 }
ban4jp 2:392b8e079c7a 52
ban4jp 2:392b8e079c7a 53 switch (result) {
ban4jp 2:392b8e079c7a 54 case NTP_CONN: ///<Connection error
ban4jp 2:392b8e079c7a 55 printf("Connection error\n");
ban4jp 2:392b8e079c7a 56 break;
ban4jp 2:392b8e079c7a 57 case NTP_TIMEOUT: ///<Connection timeout
ban4jp 2:392b8e079c7a 58 printf("Connection timeout\n");
ban4jp 2:392b8e079c7a 59 break;
ban4jp 2:392b8e079c7a 60 case NTP_PRTCL: ///<Protocol error
ban4jp 2:392b8e079c7a 61 printf("Protocol error\n");
ban4jp 2:392b8e079c7a 62 break;
ban4jp 2:392b8e079c7a 63 case NTP_DNS: ///<Could not resolve name
ban4jp 2:392b8e079c7a 64 printf("Could not resolve name\n");
ban4jp 2:392b8e079c7a 65 break;
ban4jp 2:392b8e079c7a 66 default:
ban4jp 2:392b8e079c7a 67 printf("Error result=%d\n", result);
ban4jp 2:392b8e079c7a 68 return -1;
ban4jp 2:392b8e079c7a 69 }
ban4jp 2:392b8e079c7a 70
ban4jp 2:392b8e079c7a 71 wait(5);
ban4jp 1:4dfa9d41f414 72 }
ban4jp 1:4dfa9d41f414 73
ban4jp 4:fcadeb9bdcbd 74
ban4jp 4:fcadeb9bdcbd 75 HTTPText res(res_buffer, sizeof(res_buffer));
geodenx 0:00a2d3570824 76
geodenx 0:00a2d3570824 77 while (1) {
ban4jp 4:fcadeb9bdcbd 78 {
ban4jp 4:fcadeb9bdcbd 79 char url[128];
ban4jp 4:fcadeb9bdcbd 80 char post[128]; //TODO: fix required. need saving memory.
ban4jp 4:fcadeb9bdcbd 81
ban4jp 4:fcadeb9bdcbd 82 time(&ctTime);
ban4jp 4:fcadeb9bdcbd 83
ban4jp 4:fcadeb9bdcbd 84 snprintf(url, sizeof(url),
ban4jp 4:fcadeb9bdcbd 85 "https://api.twitter.com/1.1/statuses/update.json"
ban4jp 4:fcadeb9bdcbd 86 "?status=Hello World! - %s", ctime(&ctTime));
ban4jp 4:fcadeb9bdcbd 87
ban4jp 4:fcadeb9bdcbd 88 HTTPResult result = oa4t.post(url, post, &res);
ban4jp 4:fcadeb9bdcbd 89 printf("POST result = %d\n%s\n", result, res_buffer);
ban4jp 4:fcadeb9bdcbd 90 }
ban4jp 4:fcadeb9bdcbd 91
ban4jp 4:fcadeb9bdcbd 92 {
ban4jp 4:fcadeb9bdcbd 93 const char url[] = "https://api.twitter.com/1.1/users/show.json"
ban4jp 4:fcadeb9bdcbd 94 "?screen_name=twitter";
ban4jp 4:fcadeb9bdcbd 95
ban4jp 4:fcadeb9bdcbd 96 HTTPResult result = oa4t.get(url, &res);
ban4jp 4:fcadeb9bdcbd 97 printf("GET result = %d\n%s\n", result, res_buffer);
ban4jp 4:fcadeb9bdcbd 98 }
ban4jp 4:fcadeb9bdcbd 99
ban4jp 4:fcadeb9bdcbd 100 // Wait 300 seconds for next time.
ban4jp 4:fcadeb9bdcbd 101 for (int t=0; t<300; t++) {
ban4jp 4:fcadeb9bdcbd 102 myled = 1;
ban4jp 4:fcadeb9bdcbd 103 wait(0.2);
ban4jp 4:fcadeb9bdcbd 104 myled = 0;
ban4jp 4:fcadeb9bdcbd 105 wait(0.8);
ban4jp 4:fcadeb9bdcbd 106 }
ban4jp 4:fcadeb9bdcbd 107
ban4jp 4:fcadeb9bdcbd 108 printf("\n");
geodenx 0:00a2d3570824 109 }
geodenx 0:00a2d3570824 110 }