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@4:fcadeb9bdcbd, 2015-07-08 (annotated)
- 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?
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 | 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 | } |