1 //========================================================================
2 //
3 // CurlPDFDocBuilder.cc
4 //
5 // This file is licensed under the GPLv2 or later
6 //
7 // Copyright 2010 Hib Eris <hib@hiberis.nl>
8 // Copyright 2010, 2017 Albert Astals Cid <aacid@kde.org>
9 // Copyright 2021 Oliver Sander <oliver.sander@tu-dresden.de>
10 //
11 //========================================================================
12
13 #include <config.h>
14
15 #include "CurlPDFDocBuilder.h"
16
17 #include "CachedFile.h"
18 #include "CurlCachedFile.h"
19 #include "ErrorCodes.h"
20
21 //------------------------------------------------------------------------
22 // CurlPDFDocBuilder
23 //------------------------------------------------------------------------
24
buildPDFDoc(const GooString & uri,GooString * ownerPassword,GooString * userPassword,void * guiDataA)25 std::unique_ptr<PDFDoc> CurlPDFDocBuilder::buildPDFDoc(const GooString &uri, GooString *ownerPassword, GooString *userPassword, void *guiDataA)
26 {
27 CachedFile *cachedFile = new CachedFile(new CurlCachedFileLoader(), uri.copy());
28
29 if (cachedFile->getLength() == ((unsigned int)-1)) {
30 cachedFile->decRefCnt();
31 return PDFDoc::ErrorPDFDoc(errOpenFile, uri.copy());
32 }
33
34 BaseStream *str = new CachedFileStream(cachedFile, 0, false, cachedFile->getLength(), Object(objNull));
35
36 return std::make_unique<PDFDoc>(str, ownerPassword, userPassword, guiDataA);
37 }
38
supports(const GooString & uri)39 bool CurlPDFDocBuilder::supports(const GooString &uri)
40 {
41 if (uri.cmpN("http://", 7) == 0 || uri.cmpN("https://", 8) == 0) {
42 return true;
43 } else {
44 return false;
45 }
46 }
47