Use computed properties instead of separate getter methods
This commit is contained in:
parent
f76721d7fe
commit
904d04d71c
5 changed files with 44 additions and 62 deletions
|
|
@ -172,7 +172,7 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni
|
|||
self?.setTableData()
|
||||
self?.tableView.reloadData()
|
||||
self?.editUIBarButtonItem.isEnabled = true
|
||||
if let urlString = self?.password?.getURLString() {
|
||||
if let urlString = self?.password?.urlString {
|
||||
if self?.passwordEntity?.image == nil {
|
||||
self?.updatePasswordImage(urlString: urlString)
|
||||
}
|
||||
|
|
@ -252,10 +252,10 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni
|
|||
// main section
|
||||
section = TableSection(type: .main)
|
||||
let password = self.password!
|
||||
if let username = password.getUsername() {
|
||||
if let username = password.username {
|
||||
section.item.append(TableCell(title: "username", content: username))
|
||||
}
|
||||
if let login = password.getLogin() {
|
||||
if let login = password.login {
|
||||
section.item.append(TableCell(title: "login", content: login))
|
||||
}
|
||||
section.item.append(TableCell(title: "password", content: password.password))
|
||||
|
|
@ -401,7 +401,7 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni
|
|||
}
|
||||
|
||||
func openLink() {
|
||||
var urlString = self.password?.getURLString() ?? ""
|
||||
var urlString = self.password?.urlString ?? ""
|
||||
if !urlString.lowercased().starts(with: "https://") && !urlString.lowercased().starts(with: "http://") {
|
||||
urlString = "http://\(urlString)"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -164,7 +164,7 @@ class ExtensionViewController: UIViewController, UITableViewDataSource, UITableV
|
|||
var decryptedPassword: Password?
|
||||
do {
|
||||
decryptedPassword = try self.passwordStore.decrypt(passwordEntity: passwordEntity, requestPGPKeyPassphrase: self.requestPGPKeyPassphrase)
|
||||
let username = decryptedPassword?.getUsername() ?? decryptedPassword?.getLogin() ?? ""
|
||||
let username = decryptedPassword?.username ?? decryptedPassword?.login ?? ""
|
||||
let password = decryptedPassword?.password ?? ""
|
||||
DispatchQueue.main.async {// prepare a dictionary to return
|
||||
switch self.extensionAction {
|
||||
|
|
|
|||
|
|
@ -62,6 +62,10 @@ public class Password {
|
|||
public var password = ""
|
||||
public var changed: Int = 0
|
||||
public var plainText = ""
|
||||
public var plainData: Data { return plainText.data(using: .utf8)! }
|
||||
public var username: String? { return getAdditionValue(withKey: Password.USERNAME_KEYWORD, caseSensitive: false) }
|
||||
public var login: String? { return getAdditionValue(withKey: Password.LOGIN_KEYWORD, caseSensitive: false) }
|
||||
public var urlString: String? { return getAdditionValue(withKey: Password.URL_KEYWORD, caseSensitive: false) }
|
||||
|
||||
private var additions = [AdditionField]()
|
||||
private var firstLineIsOTPField = false
|
||||
|
|
@ -180,18 +184,6 @@ public class Password {
|
|||
}
|
||||
}
|
||||
|
||||
public func getUsername() -> String? {
|
||||
return getAdditionValue(withKey: Password.USERNAME_KEYWORD, caseSensitive: false)
|
||||
}
|
||||
|
||||
public func getLogin() -> String? {
|
||||
return getAdditionValue(withKey: Password.LOGIN_KEYWORD, caseSensitive: false)
|
||||
}
|
||||
|
||||
public func getURLString() -> String? {
|
||||
return getAdditionValue(withKey: Password.URL_KEYWORD, caseSensitive: false)
|
||||
}
|
||||
|
||||
// return a key-value pair from the line
|
||||
// key might be nil, if there is no ":" in the line
|
||||
private static func getKeyValuePair(from line: String) -> (key: String?, value: String) {
|
||||
|
|
@ -222,14 +214,6 @@ public class Password {
|
|||
return plainTextSplit.count == 1 ? "" : plainTextSplit[1]
|
||||
}
|
||||
|
||||
private func getPlainText() -> String {
|
||||
return self.plainText
|
||||
}
|
||||
|
||||
public func getPlainData() -> Data {
|
||||
return getPlainText().data(using: .utf8)!
|
||||
}
|
||||
|
||||
private func getAdditionValue(withKey key: String, caseSensitive: Bool = true) -> String? {
|
||||
let searchKey = caseSensitive ? key : key.lowercased()
|
||||
let matchingField = additions.first { (caseSensitive ? $0.title : $0.title.lowercased()) == searchKey }
|
||||
|
|
|
|||
|
|
@ -850,7 +850,7 @@ public class PasswordStore {
|
|||
guard keyring.keys.count > 0 else {
|
||||
throw AppError.PGPPublicKeyNotExistError
|
||||
}
|
||||
let plainData = password.getPlainData()
|
||||
let plainData = password.plainData
|
||||
let encryptedData = try ObjectivePGP.encrypt(plainData, addSignature: false, using: keyring.keys, passphraseForKey: nil)
|
||||
if SharedDefaults[.encryptInArmored] {
|
||||
return Armor.armored(encryptedData, as: .message).data(using: .utf8)!
|
||||
|
|
|
|||
|
|
@ -41,14 +41,14 @@ class PasswordTest: XCTestCase {
|
|||
let password = getPasswordObjectWith(content: fileContent)
|
||||
|
||||
XCTAssertEqual(password.password, PasswordTest.EMPTY_STRING)
|
||||
XCTAssertEqual(password.getPlainData(), fileContent.data(using: .utf8))
|
||||
XCTAssertEqual(password.plainData, fileContent.data(using: .utf8))
|
||||
|
||||
XCTAssertEqual(password.getAdditionsPlainText(), PasswordTest.EMPTY_STRING)
|
||||
XCTAssertTrue(password.getFilteredAdditions().isEmpty)
|
||||
|
||||
XCTAssertNil(password.getUsername())
|
||||
XCTAssertNil(password.getURLString())
|
||||
XCTAssertNil(password.getLogin())
|
||||
XCTAssertNil(password.username)
|
||||
XCTAssertNil(password.urlString)
|
||||
XCTAssertNil(password.login)
|
||||
}
|
||||
|
||||
func testOneEmptyLine() {
|
||||
|
|
@ -58,14 +58,14 @@ class PasswordTest: XCTestCase {
|
|||
let password = getPasswordObjectWith(content: fileContent)
|
||||
|
||||
XCTAssertEqual(password.password, PasswordTest.EMPTY_STRING)
|
||||
XCTAssertEqual(password.getPlainData(), fileContent.data(using: .utf8))
|
||||
XCTAssertEqual(password.plainData, fileContent.data(using: .utf8))
|
||||
|
||||
XCTAssertEqual(password.getAdditionsPlainText(), PasswordTest.EMPTY_STRING)
|
||||
XCTAssertTrue(password.getFilteredAdditions().isEmpty)
|
||||
|
||||
XCTAssertNil(password.getUsername())
|
||||
XCTAssertNil(password.getURLString())
|
||||
XCTAssertNil(password.getLogin())
|
||||
XCTAssertNil(password.username)
|
||||
XCTAssertNil(password.urlString)
|
||||
XCTAssertNil(password.login)
|
||||
}
|
||||
|
||||
func testSimplePasswordFile() {
|
||||
|
|
@ -84,7 +84,7 @@ class PasswordTest: XCTestCase {
|
|||
let password = getPasswordObjectWith(content: fileContent)
|
||||
|
||||
XCTAssertEqual(password.password, passwordString)
|
||||
XCTAssertEqual(password.getPlainData(), fileContent.data(using: .utf8))
|
||||
XCTAssertEqual(password.plainData, fileContent.data(using: .utf8))
|
||||
|
||||
XCTAssertEqual(password.getAdditionsPlainText(), asPlainText(urlField, loginField, usernameField, noteField))
|
||||
XCTAssertTrue(does(password: password, contain: urlField))
|
||||
|
|
@ -92,9 +92,9 @@ class PasswordTest: XCTestCase {
|
|||
XCTAssertFalse(does(password: password, contain: usernameField))
|
||||
XCTAssertTrue(does(password: password, contain: noteField))
|
||||
|
||||
XCTAssertEqual(password.getURLString(), urlField.content)
|
||||
XCTAssertEqual(password.getLogin(), loginField.content)
|
||||
XCTAssertEqual(password.getUsername(), usernameField.content)
|
||||
XCTAssertEqual(password.urlString, urlField.content)
|
||||
XCTAssertEqual(password.login, loginField.content)
|
||||
XCTAssertEqual(password.username, usernameField.content)
|
||||
}
|
||||
|
||||
func testTwoPasswords() {
|
||||
|
|
@ -109,15 +109,15 @@ class PasswordTest: XCTestCase {
|
|||
let password = getPasswordObjectWith(content: fileContent)
|
||||
|
||||
XCTAssertEqual(password.password, firstPasswordString)
|
||||
XCTAssertEqual(password.getPlainData(), fileContent.data(using: .utf8))
|
||||
XCTAssertEqual(password.plainData, fileContent.data(using: .utf8))
|
||||
XCTAssertEqual(password.getAdditionsPlainText(), asPlainText(secondPasswordString, urlField.asString))
|
||||
|
||||
XCTAssertTrue(does(password: password, contain: urlField))
|
||||
XCTAssertTrue(does(password: password, contain: AdditionField(title: "unknown 1", content: secondPasswordString)))
|
||||
|
||||
XCTAssertNil(password.getUsername())
|
||||
XCTAssertEqual(password.getURLString(), urlField.content)
|
||||
XCTAssertNil(password.getLogin())
|
||||
XCTAssertNil(password.username)
|
||||
XCTAssertEqual(password.urlString, urlField.content)
|
||||
XCTAssertNil(password.login)
|
||||
}
|
||||
|
||||
func testNoPassword() {
|
||||
|
|
@ -130,14 +130,14 @@ class PasswordTest: XCTestCase {
|
|||
let password = getPasswordObjectWith(content: fileContent)
|
||||
|
||||
XCTAssertEqual(password.password, urlField.asString)
|
||||
XCTAssertEqual(password.getPlainData(), fileContent.data(using: .utf8))
|
||||
XCTAssertEqual(password.plainData, fileContent.data(using: .utf8))
|
||||
|
||||
XCTAssertEqual(password.getAdditionsPlainText(), asPlainText(noteField))
|
||||
XCTAssertTrue(does(password: password, contain: noteField))
|
||||
|
||||
XCTAssertNil(password.getUsername())
|
||||
XCTAssertNil(password.getURLString())
|
||||
XCTAssertNil(password.getLogin())
|
||||
XCTAssertNil(password.username)
|
||||
XCTAssertNil(password.urlString)
|
||||
XCTAssertNil(password.login)
|
||||
}
|
||||
|
||||
func testDuplicateKeys() {
|
||||
|
|
@ -152,15 +152,15 @@ class PasswordTest: XCTestCase {
|
|||
let password = getPasswordObjectWith(content: fileContent)
|
||||
|
||||
XCTAssertEqual(password.password, passwordString)
|
||||
XCTAssertEqual(password.getPlainData(), fileContent.data(using: .utf8))
|
||||
XCTAssertEqual(password.plainData, fileContent.data(using: .utf8))
|
||||
|
||||
XCTAssertEqual(password.getAdditionsPlainText(), asPlainText(urlField1, urlField2))
|
||||
XCTAssertTrue(does(password: password, contain: urlField1))
|
||||
XCTAssertTrue(does(password: password, contain: urlField2))
|
||||
|
||||
XCTAssertNil(password.getUsername())
|
||||
XCTAssertEqual(password.getURLString(), urlField1.content)
|
||||
XCTAssertNil(password.getLogin())
|
||||
XCTAssertNil(password.username)
|
||||
XCTAssertEqual(password.urlString, urlField1.content)
|
||||
XCTAssertNil(password.login)
|
||||
}
|
||||
|
||||
func testUnknownKeys() {
|
||||
|
|
@ -183,7 +183,7 @@ class PasswordTest: XCTestCase {
|
|||
let password = getPasswordObjectWith(content: fileContent)
|
||||
|
||||
XCTAssertEqual(password.password, passwordString)
|
||||
XCTAssertEqual(password.getPlainData(), fileContent.data(using: .utf8))
|
||||
XCTAssertEqual(password.plainData, fileContent.data(using: .utf8))
|
||||
|
||||
XCTAssertEqual(password.getAdditionsPlainText(), asPlainText(value1, noteField.asString, value2, value3, urlField.asString, value4))
|
||||
XCTAssertTrue(does(password: password, contain: AdditionField(title: "unknown 1", content: value1)))
|
||||
|
|
@ -193,9 +193,9 @@ class PasswordTest: XCTestCase {
|
|||
XCTAssertTrue(does(password: password, contain: urlField))
|
||||
XCTAssertTrue(does(password: password, contain: AdditionField(title: "unknown 4", content: value4)))
|
||||
|
||||
XCTAssertNil(password.getUsername())
|
||||
XCTAssertEqual(password.getURLString(), urlField.content)
|
||||
XCTAssertNil(password.getLogin())
|
||||
XCTAssertNil(password.username)
|
||||
XCTAssertEqual(password.urlString, urlField.content)
|
||||
XCTAssertNil(password.login)
|
||||
}
|
||||
|
||||
func testPasswordFileWithOtpToken() {
|
||||
|
|
@ -210,7 +210,7 @@ class PasswordTest: XCTestCase {
|
|||
let password = getPasswordObjectWith(content: fileContent)
|
||||
|
||||
XCTAssertEqual(password.password, passwordString)
|
||||
XCTAssertEqual(password.getPlainData(), fileContent.data(using: .utf8))
|
||||
XCTAssertEqual(password.plainData, fileContent.data(using: .utf8))
|
||||
|
||||
XCTAssertEqual(password.getAdditionsPlainText(), asPlainText(noteField.asString, otpToken))
|
||||
|
||||
|
|
@ -226,13 +226,13 @@ class PasswordTest: XCTestCase {
|
|||
let password = getPasswordObjectWith(content: fileContent)
|
||||
|
||||
XCTAssertEqual(password.password, otpToken)
|
||||
XCTAssertEqual(password.getPlainData(), fileContent.data(using: .utf8))
|
||||
XCTAssertEqual(password.plainData, fileContent.data(using: .utf8))
|
||||
|
||||
XCTAssertEqual(password.getAdditionsPlainText(), PasswordTest.EMPTY_STRING)
|
||||
|
||||
XCTAssertNil(password.getUsername())
|
||||
XCTAssertNil(password.getURLString())
|
||||
XCTAssertNil(password.getLogin())
|
||||
XCTAssertNil(password.username)
|
||||
XCTAssertNil(password.urlString)
|
||||
XCTAssertNil(password.login)
|
||||
|
||||
XCTAssertEqual(password.otpType, OtpType.totp)
|
||||
XCTAssertNotNil(password.getOtp())
|
||||
|
|
@ -246,9 +246,7 @@ class PasswordTest: XCTestCase {
|
|||
let password = getPasswordObjectWith(content: fileContent)
|
||||
|
||||
XCTAssertEqual(password.password, otpToken)
|
||||
XCTAssertEqual(password.getPlainData(), fileContent.data(using: .utf8))
|
||||
|
||||
XCTAssertEqual(password.getAdditionsPlainText(), PasswordTest.EMPTY_STRING)
|
||||
XCTAssertEqual(password.plainData, fileContent.data(using: .utf8))
|
||||
|
||||
XCTAssertEqual(password.otpType, OtpType.none)
|
||||
XCTAssertNil(password.getOtp())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue