Fixed custom headers and Basic authorization, added support for redirection, functional file download interface can be used for SW updates and more.
Dependents: Sample_HTTPClient Sample_HTTPClient LWM2M_NanoService_Ethernet LWM2M_NanoService_Ethernet ... more
Fork of HTTPClient by
More recent changes - added iCal processing.
Derivative of a derivative, however this one works when it comes to supplying Basic authorization to access a protected resource. Some additional changes to the debug interface to clean it up for consistency with many other components I have.
data/HTTPFile.cpp
- Committer:
- WiredHome
- Date:
- 2015-08-06
- Revision:
- 35:d9e2d1c96b75
- Parent:
- 34:3556275bebf3
- Child:
- 46:ac12edc84261
File content as of revision 35:d9e2d1c96b75:
#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 && ((size_t)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; }