QtPass 1.5.1
Multi-platform GUI for pass, the standard unix password manager.
Loading...
Searching...
No Matches
filecontent.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2016 Anne Jan Brouwer
2// SPDX-License-Identifier: GPL-3.0-or-later
3#include "filecontent.h"
4
5#include "helpers.h"
6#include <utility>
7
8static auto isLineHidden(const QString &line) -> bool {
9 return line.startsWith("otpauth://", Qt::CaseInsensitive);
10}
11
12auto FileContent::parse(const QString &fileContent,
13 const QStringList &templateFields, bool allFields)
14 -> FileContent {
15 QStringList lines = fileContent.split("\n");
16 QString password = lines.takeFirst();
17 QStringList remainingData;
18 QStringList remainingDataDisplay;
19 NamedValues namedValues;
20 for (const QString &line : AS_CONST(lines)) {
21 if (line.contains(":")) {
22 int colon = line.indexOf(':');
23 QString name = line.left(colon);
24 QString value = line.right(line.length() - colon - 1);
25 if ((allFields &&
26 !value.startsWith(
27 "//")) // if value startswith // colon is probably from a url
28 || templateFields.contains(name)) {
29 namedValues.append({name.trimmed(), value.trimmed()});
30 continue;
31 }
32 }
33
34 remainingData.append(line);
35 if (!isLineHidden(line)) {
36 remainingDataDisplay.append(line);
37 }
38 }
39 return {password, namedValues, remainingData.join("\n"),
40 remainingDataDisplay.join("\n")};
41}
42
43auto FileContent::getPassword() const -> QString { return this->password; }
44
46 return this->namedValues;
47}
48
49auto FileContent::getRemainingData() const -> QString {
50 return this->remainingData;
51}
52
54 return this->remainingDataDisplay;
55}
56
57FileContent::FileContent(QString password, NamedValues namedValues,
58 QString remainingData, QString remainingDataDisplay)
59 : password(std::move(password)), namedValues(std::move(namedValues)),
60 remainingData(std::move(remainingData)),
61 remainingDataDisplay(std::move(remainingDataDisplay)) {}
62
63NamedValues::NamedValues() = default;
64
65NamedValues::NamedValues(std::initializer_list<NamedValue> values)
66 : QList(values) {}
67
68auto NamedValues::takeValue(const QString &name) -> QString {
69 for (int i = 0; i < length(); ++i) {
70 if (at(i).name == name) {
71 return takeAt(i).value;
72 }
73 }
74 return {};
75}
auto getRemainingData() const -> QString
auto getNamedValues() const -> NamedValues
auto getRemainingDataForDisplay() const -> QString
auto getPassword() const -> QString
static auto parse(const QString &fileContent, const QStringList &templateFields, bool allFields) -> FileContent
parse parses the given fileContent in a FileContent object. The password is accessible through getPas...
The NamedValues class is mostly a list of NamedValue but also has a method to take a specific NamedVa...
Definition filecontent.h:19
auto takeValue(const QString &name) -> QString
#define AS_CONST(x)
Definition helpers.h:9