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
main.cpp@5:f0c0128cde62, 2015-07-14 (annotated)
- 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?
User | Revision | Line number | New 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 | } |