![](/media/cache/group/ep_srxDLMd.webp.50x50_q85.jpg)
Beispiel Abfrage Cloud Dienst Sunrise / Sunset
Dependencies: EthernetInterface MbedJSONValue mbed-rtos mbed
Fork of HTTP_GET by
Sunrise Sunset stellt ein API zur Verfügung, mittels dem die Sonnen Auf- und Untergangszeiten für einen bestimmten Ort abgefragt werden können.
Links
Beispiel: Abfrage für Zürich
http://api.sunrise-sunset.org/json?lat=47.3686498&lng=8.5391825
{"results": { "sunrise":"5:38:12 AM", "sunset":"5:31:12 PM", "solar_noon":"11:34:42 AM", "day_length":"11:53:00", "civil_twilight_begin":"5:07:47 AM", "civil_twilight_end":"6:01:38 PM", "nautical_twilight_begin":"4:32:04 AM", "nautical_twilight_end":"6:37:21 PM", "astronomical_twilight_begin":"3:55:32 AM", "astronomical_twilight_end":"7:13:52 PM" }, "status":"OK"}
Diff: HTTPClient/data/HTTPFile.cpp
- Revision:
- 1:2e29a33cd918
diff -r fb5060c39dd1 -r 2e29a33cd918 HTTPClient/data/HTTPFile.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HTTPClient/data/HTTPFile.cpp Sat Jan 17 14:11:01 2015 +0000 @@ -0,0 +1,68 @@ +#include "HTTPFile.h" + +//#define DEBUG "HTfi" +#include <cstdio> +#if (defined(DEBUG) && !defined(TARGET_LPC11U24)) +#define DBG(x, ...) std::printf("[DBG %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); +#define WARN(x, ...) std::printf("[WRN %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); +#define ERR(x, ...) std::printf("[ERR %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); +#define INFO(x, ...) std::printf("[INF %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); +#else +#define DBG(x, ...) +#define WARN(x, ...) +#define ERR(x, ...) +#define INFO(x, ...) +#endif + +HTTPFile::HTTPFile(char* filename) { + INFO("HTTPFile %s", filename); + file = fopen(filename, "w"); + m_chunked = false; +} + +void HTTPFile::close() { + INFO("close()"); + if (file) { + fclose(file); + file = NULL; + } +} + +void HTTPFile::writeReset() { + INFO("writeReset()"); + if (file) { + rewind(file); + } +} + +int HTTPFile::write(const char* buf, size_t len) { + size_t written; + INFO("write(%d,%s) m_len(%d), chunk %d", len, buf, m_len, m_chunked); + if (file) { + written = fwrite(buf, 1, len, file); + INFO(" writ:%d, ftell: %d", written, ftell(file)); + if ((!m_chunked && (ftell(file) >= m_len)) || (m_chunked && !written)) { + INFO("closing"); + close(); + } + } + return len; +} + +void HTTPFile::setDataType(const char* type) { + INFO("setDataType(%s)", type); +} + +//void HTTPFile::setLocation(const char * location) { +// +//} + +void HTTPFile::setIsChunked(bool chunked) { + INFO("setIsChunked(%d)", chunked); + m_chunked = chunked; +} + +void HTTPFile::setDataLen(size_t len) { + INFO("setDataLen(%d)", len); + m_len = len; +}