You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.1 KiB
73 lines
2.1 KiB
/*! @file |
|
|
|
@id $Id$ |
|
*/ |
|
// 1 2 3 4 5 6 7 8 |
|
// 45678901234567890123456789012345678901234567890123456789012345678901234567890 |
|
|
|
#ifndef OPENFROMURL_HXX |
|
#define OPENFROMURL_HXX |
|
|
|
#include <ui_openfromurl.hxx> |
|
#include <QDialog> |
|
#include <QNetworkAccessManager> |
|
#include <QNetworkReply> |
|
|
|
class OpenFromURL: public QDialog, public Ui::OpenFromURL { |
|
Q_OBJECT; |
|
public: |
|
OpenFromURL(QWidget* p): QDialog(p) { |
|
setupUi(this); |
|
} |
|
QString url() { |
|
return _url->currentText(); |
|
} |
|
void read() { |
|
QNetworkReply* reply |
|
(_net.head(QNetworkRequest(QUrl("https://"+_url->currentText())))); |
|
connect(reply, SIGNAL(finished()), SLOT(finished())); |
|
connect(reply, SIGNAL(encrypted()), SLOT(encrypted())); |
|
connect(reply, SIGNAL(sslErrors(const QList<QSslError>&)), |
|
SLOT(sslErrors(const QList<QSslError>&))); |
|
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), |
|
SLOT(error(QNetworkReply::NetworkError))); |
|
} |
|
signals: |
|
void certificate(QUrl, QSslCertificate); |
|
protected slots: |
|
void on__buttons_accepted() { |
|
_url->addItem(_url->currentText()); |
|
} |
|
void finished() { |
|
qDebug()<<"finished"; |
|
QNetworkReply* reply(dynamic_cast<QNetworkReply*>(sender())); |
|
QList<QSslCertificate> certs(reply->sslConfiguration() |
|
.peerCertificateChain()); |
|
qDebug()<<"number of peer certificates: "<<certs.size(); |
|
if (certs.size()) { |
|
Q_FOREACH(QSslCertificate cert, certs) { |
|
certificate(reply->url(), cert); |
|
} |
|
} else { |
|
QSslCertificate cert(reply->sslConfiguration().peerCertificate()); |
|
if (!cert.isNull()) { |
|
certificate(reply->url(), cert); |
|
} else { |
|
qDebug()<<"no peer certificate found"; |
|
} |
|
} |
|
} |
|
void encrypted() { |
|
qDebug()<<"encrypted"; |
|
} |
|
void sslErrors(const QList<QSslError>& errors) { |
|
qDebug()<<"sslErrors"; |
|
} |
|
void error(QNetworkReply::NetworkError code) { |
|
qDebug()<<"error"; |
|
} |
|
private: |
|
QNetworkAccessManager _net; |
|
}; |
|
|
|
#endif
|
|
|