Fork of OAuth4Tw to use mbed's official EthernetInterface and HTTPClient
Fork of OAuth4Tw by
oauth_data.cpp@1:b3501683b856, 2015-04-30 (annotated)
- Committer:
- vpcola
- Date:
- Thu Apr 30 10:19:31 2015 +0000
- Revision:
- 1:b3501683b856
Fork of OAuth4Tw to use normal EthernetInterface and HTTPClient library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vpcola | 1:b3501683b856 | 1 | #include "oauth_data.h" |
vpcola | 1:b3501683b856 | 2 | |
vpcola | 1:b3501683b856 | 3 | #include <cstring> |
vpcola | 1:b3501683b856 | 4 | |
vpcola | 1:b3501683b856 | 5 | #define OK 0 |
vpcola | 1:b3501683b856 | 6 | |
vpcola | 1:b3501683b856 | 7 | using std::memcpy; |
vpcola | 1:b3501683b856 | 8 | using std::strncpy; |
vpcola | 1:b3501683b856 | 9 | using std::strlen; |
vpcola | 1:b3501683b856 | 10 | |
vpcola | 1:b3501683b856 | 11 | #define MIN(x,y) (((x)<(y))?(x):(y)) |
vpcola | 1:b3501683b856 | 12 | |
vpcola | 1:b3501683b856 | 13 | OAuthDataOut::OAuthDataOut(const char * contentType, const char* data) |
vpcola | 1:b3501683b856 | 14 | : m_str((char *) data), |
vpcola | 1:b3501683b856 | 15 | m_contentType(contentType), |
vpcola | 1:b3501683b856 | 16 | m_pos(0), |
vpcola | 1:b3501683b856 | 17 | m_isChunked(false) |
vpcola | 1:b3501683b856 | 18 | { |
vpcola | 1:b3501683b856 | 19 | m_size = strlen(data) + 1; |
vpcola | 1:b3501683b856 | 20 | } |
vpcola | 1:b3501683b856 | 21 | |
vpcola | 1:b3501683b856 | 22 | void OAuthDataOut::readReset() |
vpcola | 1:b3501683b856 | 23 | { |
vpcola | 1:b3501683b856 | 24 | m_pos = 0; |
vpcola | 1:b3501683b856 | 25 | } |
vpcola | 1:b3501683b856 | 26 | |
vpcola | 1:b3501683b856 | 27 | // HTTPClient reads a piece of data to be transmitted |
vpcola | 1:b3501683b856 | 28 | // buf - pointer to the buffer on which to copy (destination) |
vpcola | 1:b3501683b856 | 29 | // the data, len is the length of the buffer. |
vpcola | 1:b3501683b856 | 30 | // pReadLen is a pointer a variable on which the actual number |
vpcola | 1:b3501683b856 | 31 | // of data that was copied |
vpcola | 1:b3501683b856 | 32 | int OAuthDataOut::read(char* buf, size_t len, size_t* pReadLen) |
vpcola | 1:b3501683b856 | 33 | { |
vpcola | 1:b3501683b856 | 34 | *pReadLen = MIN(len, m_size - 1 - m_pos); |
vpcola | 1:b3501683b856 | 35 | memcpy(buf, m_str + m_pos, *pReadLen); |
vpcola | 1:b3501683b856 | 36 | m_pos += *pReadLen; |
vpcola | 1:b3501683b856 | 37 | return OK; |
vpcola | 1:b3501683b856 | 38 | |
vpcola | 1:b3501683b856 | 39 | } |
vpcola | 1:b3501683b856 | 40 | // Copies the content-type of the data |
vpcola | 1:b3501683b856 | 41 | // type (out) gets the content type of the data stored. |
vpcola | 1:b3501683b856 | 42 | int OAuthDataOut::getDataType(char* type, size_t maxTypeLen) |
vpcola | 1:b3501683b856 | 43 | { |
vpcola | 1:b3501683b856 | 44 | strncpy(type, m_contentType.c_str(), maxTypeLen-1); |
vpcola | 1:b3501683b856 | 45 | type[maxTypeLen-1] = 0; |
vpcola | 1:b3501683b856 | 46 | return OK; |
vpcola | 1:b3501683b856 | 47 | } |
vpcola | 1:b3501683b856 | 48 | |
vpcola | 1:b3501683b856 | 49 | bool OAuthDataOut::getIsChunked() |
vpcola | 1:b3501683b856 | 50 | { |
vpcola | 1:b3501683b856 | 51 | return m_isChunked; |
vpcola | 1:b3501683b856 | 52 | } |
vpcola | 1:b3501683b856 | 53 | |
vpcola | 1:b3501683b856 | 54 | size_t OAuthDataOut::getDataLen() |
vpcola | 1:b3501683b856 | 55 | { |
vpcola | 1:b3501683b856 | 56 | return m_size - 1; |
vpcola | 1:b3501683b856 | 57 | } |
vpcola | 1:b3501683b856 | 58 | |
vpcola | 1:b3501683b856 | 59 | OAuthDataIn::OAuthDataIn(char* str, size_t size) |
vpcola | 1:b3501683b856 | 60 | : m_str(str), |
vpcola | 1:b3501683b856 | 61 | m_contentType("text/plain"), |
vpcola | 1:b3501683b856 | 62 | m_size(size), |
vpcola | 1:b3501683b856 | 63 | m_pos(0), |
vpcola | 1:b3501683b856 | 64 | m_isChunked(false) |
vpcola | 1:b3501683b856 | 65 | { |
vpcola | 1:b3501683b856 | 66 | |
vpcola | 1:b3501683b856 | 67 | } |
vpcola | 1:b3501683b856 | 68 | |
vpcola | 1:b3501683b856 | 69 | std::string OAuthDataIn::getContentType() |
vpcola | 1:b3501683b856 | 70 | { |
vpcola | 1:b3501683b856 | 71 | return m_contentType; |
vpcola | 1:b3501683b856 | 72 | } |
vpcola | 1:b3501683b856 | 73 | |
vpcola | 1:b3501683b856 | 74 | std::string OAuthDataIn::getData() |
vpcola | 1:b3501683b856 | 75 | { |
vpcola | 1:b3501683b856 | 76 | return std::string((const char *)m_str); |
vpcola | 1:b3501683b856 | 77 | } |
vpcola | 1:b3501683b856 | 78 | |
vpcola | 1:b3501683b856 | 79 | void OAuthDataIn::writeReset() |
vpcola | 1:b3501683b856 | 80 | { |
vpcola | 1:b3501683b856 | 81 | m_pos = 0; |
vpcola | 1:b3501683b856 | 82 | } |
vpcola | 1:b3501683b856 | 83 | |
vpcola | 1:b3501683b856 | 84 | int OAuthDataIn::write(const char* buf, size_t len) |
vpcola | 1:b3501683b856 | 85 | { |
vpcola | 1:b3501683b856 | 86 | size_t writeLen = MIN(len, m_size - 1 - m_pos); |
vpcola | 1:b3501683b856 | 87 | memcpy(m_str + m_pos, buf, writeLen); |
vpcola | 1:b3501683b856 | 88 | m_pos += writeLen; |
vpcola | 1:b3501683b856 | 89 | m_str[m_pos] = '\0'; |
vpcola | 1:b3501683b856 | 90 | return OK; |
vpcola | 1:b3501683b856 | 91 | } |
vpcola | 1:b3501683b856 | 92 | |
vpcola | 1:b3501683b856 | 93 | void OAuthDataIn::setDataType(const char* type) |
vpcola | 1:b3501683b856 | 94 | { |
vpcola | 1:b3501683b856 | 95 | m_contentType = type; |
vpcola | 1:b3501683b856 | 96 | } |
vpcola | 1:b3501683b856 | 97 | |
vpcola | 1:b3501683b856 | 98 | void OAuthDataIn::setIsChunked(bool chunked) |
vpcola | 1:b3501683b856 | 99 | { |
vpcola | 1:b3501683b856 | 100 | m_isChunked = chunked; |
vpcola | 1:b3501683b856 | 101 | } |
vpcola | 1:b3501683b856 | 102 | |
vpcola | 1:b3501683b856 | 103 | void OAuthDataIn::setDataLen(size_t len) |
vpcola | 1:b3501683b856 | 104 | { |
vpcola | 1:b3501683b856 | 105 | m_size = len; |
vpcola | 1:b3501683b856 | 106 | } |