20 #include "awsabstractsignature.h" 
   21 #include "awsabstractsignature_p.h" 
  137     QString path = QDir::cleanPath(QLatin1Char(
'/') + url.path(QUrl::FullyEncoded));
 
  146     if (path.startsWith(QLatin1String(
"//"))) {
 
  152     if ((url.path().endsWith(QLatin1Char(
'/'))) && (!path.endsWith(QLatin1Char(
'/')))) {
 
  153         path += QLatin1Char(
'/');
 
  180     typedef QPair<QString, QString> QStringPair;
 
  181     QList<QStringPair> list = query.queryItems(QUrl::FullyDecoded);
 
  184     foreach (
const QStringPair &pair, list) {
 
  185         if (!result.isEmpty()) result += QLatin1Char(
'&');
 
  186         result += QString::fromUtf8(QUrl::toPercentEncoding(pair.first)) + QLatin1Char(
'=') +
 
  187                   QString::fromUtf8(QUrl::toPercentEncoding(pair.second));
 
  189     return result.toUtf8();
 
  206         case QNetworkAccessManager::DeleteOperation: 
return QLatin1String(
"DELETE");
 
  207         case QNetworkAccessManager::HeadOperation:   
return QLatin1String(
"HEAD");
 
  208         case QNetworkAccessManager::GetOperation:    
return QLatin1String(
"GET");
 
  209         case QNetworkAccessManager::PostOperation:   
return QLatin1String(
"POST");
 
  210         case QNetworkAccessManager::PutOperation:    
return QLatin1String(
"PUT");
 
  211         case QNetworkAccessManager::CustomOperation: 
 
  214             Q_ASSERT_X(
false, Q_FUNC_INFO, 
"invalid operation");
 
  245                                                const bool warnOnNonIdenticalDuplicate)
 const 
  247     if (query.hasQueryItem(key)) {
 
  248         const QString existingValue = query.queryItemValue(key, QUrl::FullyEncoded);
 
  249         const bool existingQueryItemIsIdentical = (existingValue == value);
 
  250         if ((warnOnNonIdenticalDuplicate) && (!existingQueryItemIsIdentical)) {
 
  251             qWarning() << 
"AwsAbstractSignature::setQueryItem Not overwriting existing value for key" 
  252                        << key << 
':' << existingValue;
 
  254         return existingQueryItemIsIdentical;
 
  256     query.addQueryItem(key, value);
 
bool setQueryItem(QUrlQuery &query, const QString &key, const QString &value, const bool warnOnNonIdenticalDuplicate=true) const 
Set a query item, checking for existing values first. 
AwsAbstractSignaturePrivate *const d_ptr
Internal d-pointer. 
Private implementation for AwsAbstractSignature. 
QByteArray canonicalQuery(const QUrlQuery &query) const 
Create an AWS Signature canonical query. 
AwsAbstractSignature()
Initialises an AwsAbstractSignature object. 
virtual ~AwsAbstractSignature()
AwsAbstractSignature destructor. 
virtual ~AwsAbstractSignaturePrivate()
AwsAbstractSignaturePrivate destructor. 
QString httpMethod(const QNetworkAccessManager::Operation operation) const 
Create an AWS Signature request method string. 
Interface class for providing AWS signatures. 
AwsAbstractSignaturePrivate(AwsAbstractSignature *const q)
Constructs a new AwsAbstractSignaturePrivate object. 
QString canonicalPath(const QUrl &url) const 
Create an AWS Signature canonical path.