forked from futurewei-cloud/caerus-dikeCS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPutObject.cpp
74 lines (61 loc) · 1.97 KB
/
PutObject.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <Poco/Net/ServerSocket.h>
#include <Poco/Net/HTTPServer.h>
#include <Poco/Net/HTTPRequestHandler.h>
#include <Poco/Net/HTTPRequestHandlerFactory.h>
#include <Poco/Net/HTTPResponse.h>
#include <Poco/Net/HTTPServerRequest.h>
#include <Poco/Net/HTTPServerResponse.h>
#include <Poco/Util/ServerApplication.h>
#include <Poco/Util/AbstractConfiguration.h>
#include <Poco/Util/XMLConfiguration.h>
#include <Poco/XML/XMLWriter.h>
#include "Poco/StreamCopier.h"
#include "Poco/Timespan.h"
#include "Poco/FileStream.h"
#include <iostream>
#include <sstream>
#include <fstream>
#include <map>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include "TimeUtil.hpp"
#include "S3Handlers.hpp"
using namespace Poco::Net;
using namespace Poco::Util;
using namespace Poco::XML;
using namespace std;
void PutObject::handleRequest(HTTPServerRequest &req, HTTPServerResponse &resp)
{
istream& istr = req.stream();
string dataPath = "/data";
string objectName = dataPath + req.getURI();
Poco::FileOutputStream ostr(objectName, std::ios::trunc);
//Poco::StreamCopier::copyStream(istr, ostr);
string line;
while(std::getline(istr, line)){
if(string::npos == line.find(";chunk-signature=")){
ostr << line << "\n";
}
}
ostr.flush();
ostr.close();
resp.setStatus(HTTPResponse::HTTP_OK);
resp.setContentLength(0);
resp.setKeepAlive(true);
/*
resp.set("X-Xss-Protection", "1; mode=block");
resp.set("Accept-Ranges", "bytes");
resp.set("Content-Security-Policy", "block-all-mixed-content");
resp.set("ETag", "593373f70ed20e8e18ea9f2475979845");
resp.set("Server", "dikeCS");
resp.set("Vary", "Origin");
resp.set("X-Amz-Request-Id", "1645E415E0040DA6");
*/
ostream& outStream = resp.send();
outStream.flush();
cout << TimeUtil().Yellow() << TimeUtil().Now() << " Done " << TimeUtil().Reset();
cout << req.getURI() << endl;
//resp.write(cout);
}