Wittyshare  0.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
WsFileResource.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2006-Today G. Deleeuw
3  *
4  * See the LICENSE file for terms of use.
5  */
6 #include <stdio.h>
7 
8 #include <boost/filesystem/operations.hpp>
9 #include <boost/filesystem/exception.hpp>
10 #include <boost/filesystem/convenience.hpp>
11 
12 #include <Wt/Http/Request>
13 #include <Wt/Http/Response>
14 #include <Wt/WApplication>
15 #include <Wt/WLogger>
16 
17 #include "WsFileResource.h"
18 
19 WsFileResource::WsFileResource(const std::string& strFile, WObject* parent)
20  : WFileResource(parent), m_bDelete(false), m_strFile(strFile)
21 {
22  std::string m_strExtension = boost::filesystem::extension(m_strFile);
23  if ( m_strExtension == ".pdf" )
24  setMimeType("application/pdf");
25  if ( m_strExtension == ".rss" )
26  setMimeType("application/rss+xml");
27  if ( m_strExtension == ".ods" )
28  setMimeType("application/x-vnd.oasis.opendocument.spreadsheet");
29  if ( m_strExtension == ".xls" )
30  setMimeType("application/vnd.ms-excel");
31  if ( m_strExtension == ".png" )
32  setMimeType("image/png");
33  if ( m_strExtension == ".zip" )
34  setMimeType("application/x-gzip");
35  if ( m_strExtension == ".bz2" )
36  setMimeType("application/x-bz2");
37  suggestFileName("data" + m_strExtension);
38 }
39 
41 {
42  m_bDelete = bDelete;
43 }
44 
45 void WsFileResource::handleRequest(const Wt::Http::Request& request, Wt::Http::Response& response)
46 {
47  // is not a continuation for more data of a previous request
48  if ( !request.continuation() ) {
49  if ( !boost::filesystem::exists(m_strFile) ) return;
50  setFileName(m_strFile);
51  }
52  WFileResource::handleRequest(request, response);
53  // this was the last data for the request
54  if ( !response.continuation() )
55  if ( m_bDelete )
56  unlink(fileName().c_str());
57 }
58 
virtual void handleRequest(const Wt::Http::Request &request, Wt::Http::Response &response)
const std::string m_strFile
void deleteAfterProcessed(bool bDelete)
WsFileResource(const std::string &strFile, Wt::WObject *parent=0)