mirror of
https://github.com/idolpx/libMeatloaf.git
synced 2025-12-06 04:38:49 -05:00
229 lines
6.9 KiB
C++
229 lines
6.9 KiB
C++
// #include "webdav.h"
|
|
|
|
// /********************************************************
|
|
// * File impls
|
|
// ********************************************************/
|
|
|
|
// bool WebDAVFile::isDirectory() {
|
|
// // hey, why not?
|
|
// return false;
|
|
// }
|
|
|
|
// MStream* WebDAVFile::getSourceStream() {
|
|
// // has to return OPENED stream
|
|
// Debug_printv("[%s]", url.c_str());
|
|
// MStream* istream = new WebDAVIStream(url);
|
|
// istream->open();
|
|
// return istream;
|
|
// }
|
|
|
|
// MStream* WebDAVFile::getDecodedStream(std::shared_ptr<MStream> is) {
|
|
// return is.get(); // we've overriden istreamfunction, so this one won't be used
|
|
// }
|
|
|
|
// time_t WebDAVFile::getLastWrite() {
|
|
// return 0; // might be taken from Last-Modified, probably not worth it
|
|
// }
|
|
|
|
// time_t WebDAVFile::getCreationTime() {
|
|
// return 0; // might be taken from Last-Modified, probably not worth it
|
|
// }
|
|
|
|
// bool WebDAVFile::exists() {
|
|
// Debug_printv("[%s]", url.c_str());
|
|
// // we may try open the stream to check if it exists
|
|
// std::unique_ptr<MStream> test(getSourceStream());
|
|
// // remember that MStream destuctor should close the stream!
|
|
// return test->isOpen();
|
|
// }
|
|
|
|
// uint32_t WebDAVFile::size() {
|
|
// // we may take content-lenght from header if exists
|
|
// std::unique_ptr<MStream> test(getSourceStream());
|
|
|
|
// size_t size = 0;
|
|
|
|
// if(test->isOpen())
|
|
// size = test->available();
|
|
|
|
// test->close();
|
|
|
|
// return size;
|
|
// }
|
|
|
|
|
|
|
|
// // void WebDAVFile::addHeader(const String& name, const String& value, bool first, bool replace) {
|
|
// // //m_http.addHeader
|
|
// // }
|
|
|
|
|
|
// /********************************************************
|
|
// * Ostream impls
|
|
// ********************************************************/
|
|
|
|
// bool WebDAVOStream::seek(uint32_t pos) {
|
|
// if(pos==_position)
|
|
// return true;
|
|
|
|
// if(isFriendlySkipper) {
|
|
// char str[40];
|
|
// // Range: bytes=91536-(91536+255)
|
|
// snprintf(str, sizeof str, "bytes=%lu-%lu", (unsigned long)pos, ((unsigned long)pos + 255));
|
|
// m_http.set_header("range",str);
|
|
// int httpCode = m_http.GET(); //Send the request
|
|
// Debug_printv("httpCode[%d] str[%s]", httpCode, str);
|
|
// if(httpCode != 200 || httpCode != 206)
|
|
// return false;
|
|
|
|
// Debug_printv("stream opened[%s]", url.c_str());
|
|
// //m_file = m_http.getStream(); //Get the response payload as Stream
|
|
// _position = pos;
|
|
// return true;
|
|
|
|
// } else {
|
|
// if(pos<_position) {
|
|
// // skipping backward and range not supported, let's simply reopen the stream...
|
|
// m_http.close();
|
|
// bool op = open();
|
|
// if(!op)
|
|
// return false;
|
|
// }
|
|
|
|
// _position = 0;
|
|
// // ... and then read until we reach pos
|
|
// // while(_position < pos) {
|
|
// // _position+=m_file.readBytes(buffer, size); <----------- trurn this on!!!!
|
|
// // }
|
|
|
|
// return true;
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
// void WebDAVOStream::close() {
|
|
// m_http.close();
|
|
// }
|
|
|
|
// bool WebDAVOStream::open() {
|
|
// // we'll ad a lambda that will allow adding headers
|
|
// // m_http.addHeader("Content-Type", "application/x-www-form-urlencoded");
|
|
// mstr::replaceAll(url, "HTTP:", "http:");
|
|
// // m_http.setReuse(true);
|
|
// bool initOk = m_http.begin( url );
|
|
// Debug_printv("[%s] initOk[%d]", url.c_str(), initOk);
|
|
// if(!initOk)
|
|
// return false;
|
|
|
|
// //int httpCode = m_http.PUT(); //Send the request
|
|
// //Serial.printf("URLSTR: httpCode=%d\r\n", httpCode);
|
|
// // if(httpCode != 200)
|
|
// // return false;
|
|
|
|
// _is_open = true;
|
|
// //m_file = m_http.getStream(); //Get the response payload as Stream
|
|
// return true;
|
|
// }
|
|
|
|
// //uint32_t WebDAVOStream::write(uint8_t) {};
|
|
// uint32_t WebDAVOStream::write(const uint8_t *buf, uint32_t size) {
|
|
// return 0; // m_file.write(buf, size);
|
|
// }
|
|
|
|
// bool WebDAVOStream::isOpen() {
|
|
// return _is_open;
|
|
// }
|
|
|
|
|
|
// /********************************************************
|
|
// * Istream impls
|
|
// ********************************************************/
|
|
|
|
// bool WebDAVIStream::seek(uint32_t pos) {
|
|
// if(pos==_position)
|
|
// return true;
|
|
|
|
// if(isFriendlySkipper) {
|
|
// char str[40];
|
|
// // Range: bytes=91536-(91536+255)
|
|
// snprintf(str, sizeof str, "bytes=%lu-%lu", (unsigned long)pos, ((unsigned long)pos + 255));
|
|
// m_http.set_header("range",str);
|
|
// int httpCode = m_http.GET(); //Send the request
|
|
// Debug_printv("httpCode[%d] str[%s]", httpCode, str);
|
|
// if(httpCode != 200 || httpCode != 206)
|
|
// return false;
|
|
|
|
// Debug_printv("stream opened[%s]", url.c_str());
|
|
// //m_file = m_http.getStream(); //Get the response payload as Stream
|
|
// _position = pos;
|
|
// return true;
|
|
|
|
// } else {
|
|
// if(pos<_position) {
|
|
// // skipping backward and range not supported, let's simply reopen the stream...
|
|
// m_http.close();
|
|
// bool op = open();
|
|
// if(!op)
|
|
// return false;
|
|
// }
|
|
|
|
// _position = 0;
|
|
// // ... and then read until we reach pos
|
|
// // while(_position < pos) {
|
|
// // _position+=m_file.readBytes(buffer, size); <----------- trurn this on!!!!
|
|
// // }
|
|
|
|
// return true;
|
|
// }
|
|
// }
|
|
|
|
// void WebDAVIStream::close() {
|
|
// m_http.close();
|
|
// }
|
|
|
|
// bool WebDAVIStream::open() {
|
|
// //mstr::replaceAll(url, "HTTP:", "http:");
|
|
// bool initOk = m_http.begin( url );
|
|
// Debug_printv("input %s: someRc=%d", url.c_str(), initOk);
|
|
// if(!initOk)
|
|
// return false;
|
|
|
|
// // Setup response headers we want to collect
|
|
// const char * headerKeys[] = {"accept-ranges", "content-type", "content-length"};
|
|
// const size_t numberOfHeaders = 2;
|
|
// m_http.collect_headers(headerKeys, numberOfHeaders);
|
|
|
|
// //Send the request
|
|
// int httpCode = m_http.GET();
|
|
// Debug_printv("httpCode=%d", httpCode);
|
|
// if(httpCode != 200)
|
|
// return false;
|
|
|
|
// // Accept-Ranges: bytes - if we get such header from any request, good!
|
|
// isFriendlySkipper = m_http.get_header("accept-ranges") == "bytes";
|
|
// Debug_printv("isFriendlySkipper[%d]", isFriendlySkipper);
|
|
// _is_open = true;
|
|
// Debug_printv("[%s]", url.c_str());
|
|
// //m_file = m_http.getStream(); //Get the response payload as Stream
|
|
// _size = stoi(m_http.get_header("content-length"));
|
|
// Debug_printv("length=%d", _size);
|
|
|
|
// // Is this text?
|
|
// std::string ct = m_http.get_header("content-type").c_str();
|
|
// Debug_printv("content_type[%s]", ct.c_str());
|
|
// isText = mstr::isText(ct);
|
|
|
|
// return true;
|
|
// };
|
|
|
|
// uint32_t WebDAVIStream::read(uint8_t* buf, uint32_t size) {
|
|
// auto bytesRead= m_http.read( buf, size );
|
|
// _position+=bytesRead;
|
|
// return bytesRead;
|
|
// };
|
|
|
|
// bool WebDAVIStream::isOpen() {
|
|
// return _is_open;
|
|
// };
|