CLOUD: Add DownloadRequest stub

It reads the passed NetworkReadStream and prints its contents onto
console (for now). It would be writing contents into file.

To simplify work with raw NetworkReadStream there is a new CurlRequest.
It basically does nothing, but as ConnMan handles transfers only if
there is an active Request, you need some Request to get
NetworkReadStream working. Thus, there is a CurlRequest, which is active
until NetworkReadStream is completely read. CurlRequest also has useful
addHeader() and addPostField() methods in order to customize the request
easily. Use execute() method to get its NetworkReadStream.

DropboxStorage implements streamFile() and download() API methods. As
DownloadRequest is incomplete, it is not actually downloading a file,
though.
This commit is contained in:
Alexander Tkachev 2016-05-24 11:57:49 +06:00
parent 3582f6165c
commit 826a2a921c
14 changed files with 288 additions and 43 deletions

View file

@ -23,21 +23,14 @@
#ifndef BACKENDS_NETWORKING_CURL_CURLJSONREQUEST_H
#define BACKENDS_NETWORKING_CURL_CURLJSONREQUEST_H
#include "backends/networking/curl/request.h"
#include "backends/networking/curl/curlrequest.h"
#include "common/memstream.h"
#include "common/json.h"
struct curl_slist;
namespace Networking {
class NetworkReadStream;
class CurlJsonRequest : public Request {
const char *_url;
NetworkReadStream *_stream;
curl_slist *_headersList;
Common::String _postFields;
class CurlJsonRequest: public CurlRequest {
Common::MemoryWriteStreamDynamic _contentsStream;
/** Prepares raw bytes from _contentsStream to be parsed with Common::JSON::parse(). */
@ -48,10 +41,6 @@ public:
virtual ~CurlJsonRequest();
virtual bool handle();
void addHeader(Common::String header);
void addPostField(Common::String header);
};
} //end of namespace Networking