File indexing completed on 2024-05-12 16:25:42

0001 /*
0002    SPDX-FileCopyrightText: 2022-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "deviceinfo.h"
0008 #include "utils.h"
0009 
0010 DeviceInfo::DeviceInfo() = default;
0011 
0012 DeviceInfo::~DeviceInfo() = default;
0013 
0014 QDebug operator<<(QDebug d, const DeviceInfo &t)
0015 {
0016     d.space() << "Identifier" << t.identifier();
0017     d.space() << "Host" << t.host();
0018     d.space() << "SessionId" << t.sessionId();
0019     d.space() << "Ip" << t.ip();
0020     d.space() << "UserId" << t.userId();
0021     d.space() << "LoginAt" << t.loginAt();
0022     return d;
0023 }
0024 
0025 void DeviceInfo::parseDeviceInfo(const QJsonObject &obj)
0026 {
0027     mIdentifier = obj[QLatin1String("_id")].toString();
0028     mHost = obj[QLatin1String("host")].toString();
0029     mSessionId = obj[QLatin1String("sessionId")].toString();
0030     mIp = obj[QLatin1String("ip")].toString();
0031     mUserId = obj[QLatin1String("userId")].toString();
0032     const QJsonObject deviceObj = obj[QLatin1String("device")].toObject();
0033     if (!deviceObj.isEmpty()) {
0034         const QJsonObject osObj = deviceObj[QLatin1String("os")].toObject();
0035         if (!osObj.isEmpty()) {
0036             mOs = osObj[QLatin1String("name")].toString() + QLatin1Char(' ') + osObj[QLatin1String("version")].toString();
0037         }
0038         mClient = deviceObj[QLatin1String("name")].toString();
0039     }
0040     setLoginAt(Utils::parseIsoDate(QStringLiteral("loginAt"), obj));
0041     //"device":{"longVersion":"103.0","name":"Firefox","os":{"name":"Linux","version":"x86_64"},"type":"browser","version":"103.0"}
0042     // TODO LoginAt
0043     // TODO
0044 }
0045 
0046 bool DeviceInfo::operator==(const DeviceInfo &other) const
0047 {
0048     return mIdentifier == other.identifier() && mIp == other.ip() && mHost == other.host() && mSessionId == other.sessionId() && mUserId == other.userId()
0049         && mLoginAt == other.loginAt() && mOs == other.os() && mClient == other.client();
0050 }
0051 
0052 const QString &DeviceInfo::identifier() const
0053 {
0054     return mIdentifier;
0055 }
0056 
0057 void DeviceInfo::setIdentifier(const QString &newIdentifier)
0058 {
0059     mIdentifier = newIdentifier;
0060 }
0061 
0062 const QString &DeviceInfo::host() const
0063 {
0064     return mHost;
0065 }
0066 
0067 void DeviceInfo::setHost(const QString &newHost)
0068 {
0069     mHost = newHost;
0070 }
0071 
0072 const QString &DeviceInfo::sessionId() const
0073 {
0074     return mSessionId;
0075 }
0076 
0077 void DeviceInfo::setSessionId(const QString &newSessionId)
0078 {
0079     mSessionId = newSessionId;
0080 }
0081 
0082 const QString &DeviceInfo::ip() const
0083 {
0084     return mIp;
0085 }
0086 
0087 void DeviceInfo::setIp(const QString &newIp)
0088 {
0089     mIp = newIp;
0090 }
0091 
0092 const QString &DeviceInfo::userId() const
0093 {
0094     return mUserId;
0095 }
0096 
0097 void DeviceInfo::setUserId(const QString &newUserId)
0098 {
0099     mUserId = newUserId;
0100 }
0101 
0102 qint64 DeviceInfo::loginAt() const
0103 {
0104     return mLoginAt;
0105 }
0106 
0107 void DeviceInfo::setLoginAt(qint64 newLoginAt)
0108 {
0109     mLoginAt = newLoginAt;
0110     QLocale l;
0111     mLoginAtDateTimeStr = l.toString(QDateTime::fromMSecsSinceEpoch(mLoginAt), QLocale::LongFormat);
0112 }
0113 
0114 QString DeviceInfo::loginAtDisplay() const
0115 {
0116     return mLoginAtDateTimeStr;
0117 }
0118 
0119 const QString &DeviceInfo::client() const
0120 {
0121     return mClient;
0122 }
0123 
0124 void DeviceInfo::setClient(const QString &newClient)
0125 {
0126     mClient = newClient;
0127 }
0128 
0129 const QString &DeviceInfo::os() const
0130 {
0131     return mOs;
0132 }
0133 
0134 void DeviceInfo::setOs(const QString &newOs)
0135 {
0136     mOs = newOs;
0137 }