diff options
author | 2023-03-22 20:20:13 +0530 | |
---|---|---|
committer | 2023-03-22 20:20:13 +0530 | |
commit | 8f983031f7659ccd8bb95db75d243cdd1b00b2df (patch) | |
tree | ae00e9b8ff27e4be0addf7bed886ba318108ed12 /src | |
parent | fa5add01ac0c35ba719d0eec194d11ab6b5d2f2c (diff) | |
download | whatsie-8f983031f7659ccd8bb95db75d243cdd1b00b2df.tar.gz whatsie-8f983031f7659ccd8bb95db75d243cdd1b00b2df.zip |
chore: update utils
- update genRand
Diffstat (limited to 'src')
-rw-r--r-- | src/utils.cpp | 65 | ||||
-rw-r--r-- | src/utils.h | 3 |
2 files changed, 33 insertions, 35 deletions
diff --git a/src/utils.cpp b/src/utils.cpp index da8d2a2..c00b25d 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -62,40 +62,35 @@ QString utils::toCamelCase(const QString &s) { } QString utils::generateRandomId(int length) { + return genRand(length, false, true, false); +} - QString str = QUuid::createUuid().toString(); - str.remove(QRegularExpression("{|}|-")); - if (str.length() < length) { - while (str.length() != length) { - int required_char = length - str.length(); - str = str + str.append(genRand(required_char)); - } +QString utils::genRand(int length, bool useUpper, bool useLower, + bool useDigits) { + QString possibleCharacters; + if (useUpper) { + possibleCharacters += "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; } - if (str.length() > length) { - while (str.length() != length) { - str = str.remove(str.length() - 1, 1); - } + if (useLower) { + possibleCharacters += "abcdefghijklmnopqrstuvwxyz"; + } + if (useDigits) { + possibleCharacters += "0123456789"; + } + + if (possibleCharacters.isEmpty()) { + return genRand(length, true, true, true); } - return str; -} -QString utils::genRand(int length) { - QDateTime cd = QDateTime::currentDateTime(); - const QString possibleCharacters( - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" + - QString::number(cd.currentMSecsSinceEpoch()) - .remove(QRegExp("[^a-zA-Z\\d\\s]"))); - - const int randomStringLength = length; - QString randomString; - int rand = QRandomGenerator::global()->generate(); - for (int i = 0; i < randomStringLength; ++i) { - int index = rand % possibleCharacters.length(); - QChar nextChar = possibleCharacters.at(index); - randomString.append(nextChar); + QByteArray randomBytes; + randomBytes.resize(length); + for (int i = 0; i < length; ++i) { + randomBytes[i] = + possibleCharacters[QRandomGenerator::securelySeeded().generate() % + possibleCharacters.length()] + .toLatin1(); } - randomString = randomString.trimmed().simplified().remove(" "); - return randomString; + return QString::fromLatin1(randomBytes); } QString utils::convertSectoDay(qint64 secs) { @@ -117,11 +112,13 @@ QString utils::convertSectoDay(qint64 secs) { } // static on demand path maker -QString utils::returnPath(QString pathname,QString standardLocation = QStandardPaths::writableLocation( - QStandardPaths::DataLocation)) { - QChar sepe = QDir::separator(); - QDir d(standardLocation + sepe + pathname); - d.mkpath(standardLocation + sepe + pathname); +QString +utils::returnPath(QString pathname, + QString standardLocation = QStandardPaths::writableLocation( + QStandardPaths::DataLocation)) { + QChar sepe = QDir::separator(); + QDir d(standardLocation + sepe + pathname); + d.mkpath(standardLocation + sepe + pathname); return standardLocation + sepe + pathname + sepe; } diff --git a/src/utils.h b/src/utils.h index d5b9765..c972ba4 100644 --- a/src/utils.h +++ b/src/utils.h @@ -28,7 +28,6 @@ public slots: static bool delete_cache(const QString cache_dir); static QString toCamelCase(const QString &s); static QString generateRandomId(int length); - static QString genRand(int length); static QString convertSectoDay(qint64 secs); static QString returnPath(QString pathname, QString standardLocation); static QString EncodeXML(const QString &encodeMe); @@ -40,6 +39,8 @@ public slots: static QString appDebugInfo(); static void desktopOpenUrl(const QString &str); static bool isPhoneNumber(const QString &phoneNumber); + static QString genRand(int length, bool useUpper = true, bool useLower = true, + bool useDigits = true); private slots: // use refreshCacheSize static quint64 dir_size(const QString &directory); |