[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kdepim-runtime/KDE/4.14] resources/dav/common: Generate a unique ID for file names
From: Grégory_Oestreicher <greg () kamago ! net>
Date: 2014-08-31 21:42:55
Message-ID: E1XOCtj-00049O-Kk () scm ! kde ! org
[Download RAW message or body]
Git commit 509c99171995c78b7aae39ef73cf9d4209d704fd by Grégory Oestreicher.
Committed on 31/08/2014 at 21:41.
Pushed by goestreicher into branch 'KDE/4.14'.
Generate a unique ID for file names
Based on a review submitted by Dan Vratil.
BUG: 327623
FIXED-IN: 4.14.1
M +11 -12 resources/dav/common/davutils.cpp
M +5 -0 resources/dav/common/davutils.h
http://commits.kde.org/kdepim-runtime/509c99171995c78b7aae39ef73cf9d4209d704fd
diff --git a/resources/dav/common/davutils.cpp b/resources/dav/common/davutils.cpp
index 06eb77c..560a076 100644
--- a/resources/dav/common/davutils.cpp
+++ b/resources/dav/common/davutils.cpp
@@ -223,6 +223,15 @@ DavUtils::Protocol DavUtils::protocolByTranslatedName( const QString &name )
return protocol;
}
+QString DavUtils::createUniqueId()
+{
+ qint64 time = QDateTime::currentMSecsSinceEpoch() / 1000;
+ int r = qrand() % 1000;
+ QString id = QLatin1String( "R" ) + QString::number( r );
+ QString uid = QString::number( time ) + QLatin1String( "." ) + id;
+ return uid;
+}
+
DavItem DavUtils::createDavItem( const Akonadi::Item &item, const Akonadi::Collection &collection )
{
QByteArray rawData;
@@ -233,12 +242,7 @@ DavItem DavUtils::createDavItem( const Akonadi::Item &item, const Akonadi::Colle
if ( item.hasPayload<KABC::Addressee>() ) {
const KABC::Addressee contact = item.payload<KABC::Addressee>();
-
- const QString fileName = contact.uid();
- if ( fileName.isEmpty() ) {
- kError() << "Invalid contact uid";
- return davItem;
- }
+ const QString fileName = createUniqueId();
url = KUrl( basePath + fileName + QLatin1String(".vcf") );
@@ -256,12 +260,7 @@ DavItem DavUtils::createDavItem( const Akonadi::Item &item, const Akonadi::Colle
rawData = converter.exportVCard( contact, KABC::VCardConverter::v3_0 );
} else if ( item.hasPayload<IncidencePtr>() ) {
const IncidencePtr ptr = item.payload<IncidencePtr>();
-
- const QString fileName = ptr->instanceIdentifier();
- if ( fileName.isEmpty() ) {
- kError() << "Invalid incidence uid";
- return davItem;
- }
+ const QString fileName = createUniqueId();
url = KUrl( basePath + fileName + QLatin1String(".ics") );
mimeType = QLatin1String("text/calendar");
diff --git a/resources/dav/common/davutils.h b/resources/dav/common/davutils.h
index cdf9751..ce4c25f 100644
--- a/resources/dav/common/davutils.h
+++ b/resources/dav/common/davutils.h
@@ -156,6 +156,11 @@ namespace DavUtils
Privileges parsePrivilege( const QDomElement &element );
/**
+ * Creates a unique identifier that can be used as a file name to upload the dav item
+ */
+ QString createUniqueId();
+
+ /**
* Creates a new DavItem from the Akonadi::Item @p item.
*
* The returned item will have no payload (DavItem::data() will return an empty
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic