view ui/sslconnection_curl.h @ 956:879a634d0a40

(issue41) Add proxy support
author Andre Heinecke <andre.heinecke@intevation.de>
date Wed, 27 Aug 2014 16:31:40 +0200
parents eaed02defe6a
children 6a3d284b9c16
line wrap: on
line source
#ifndef UI_SSLCONNECTION_CURL_H
#define UI_SSLCONNECTION_CURL_H
/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU GPL (v>=2)
 * and comes with ABSOLUTELY NO WARRANTY!
 * See LICENSE.txt for details.
 */

/**
 * @file sslconnection_curl.h
 * @brief SSLConnection utilizing libcurl for http.
 */

#include "sslconnection.h"

#include <curl/curl.h>

#include <QDateTime>
#include <QTemporaryFile>

class QSaveFile;

class SSLConnectionCurl : public SSLConnection
{
public:
    SSLConnectionCurl(const QString& url,
            const QByteArray& certificate = QByteArray());

    ~SSLConnectionCurl();

    int connect();

    QDateTime getLastModifiedHeader(const QString &resource);

    bool downloadFile(const QString &resource, const QString &filename,
                      size_t maxSize);

    void setProxy(const QUrl &proxyUrl);

private:
    CURL *mCurl;
    QTemporaryFile mCertFile;
    char mErrBuf[CURL_ERROR_SIZE + 1];

    /** @brief Internal write function for curl */
};

size_t write_data(void *ptr, size_t size, size_t nmemb, QSaveFile *fp);

#endif // UI_SSLCONNECTION_CURL_H

http://wald.intevation.org/projects/trustbridge/