diff --git a/pass/Controllers/PasswordDetailTableViewController.swift b/pass/Controllers/PasswordDetailTableViewController.swift index b46c6e6..33154e5 100644 --- a/pass/Controllers/PasswordDetailTableViewController.swift +++ b/pass/Controllers/PasswordDetailTableViewController.swift @@ -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)" } diff --git a/passExtension/ExtensionViewController.swift b/passExtension/ExtensionViewController.swift index 6e2d67e..0820f9e 100644 --- a/passExtension/ExtensionViewController.swift +++ b/passExtension/ExtensionViewController.swift @@ -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 { diff --git a/passKit/Models/Password.swift b/passKit/Models/Password.swift index bb8ddac..d795721 100644 --- a/passKit/Models/Password.swift +++ b/passKit/Models/Password.swift @@ -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 } diff --git a/passKit/Models/PasswordStore.swift b/passKit/Models/PasswordStore.swift index 3d3cac0..fcb7d21 100644 --- a/passKit/Models/PasswordStore.swift +++ b/passKit/Models/PasswordStore.swift @@ -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)! diff --git a/passKitTests/PasswordTests.swift b/passKitTests/PasswordTests.swift index f5fb130..5fc256f 100644 --- a/passKitTests/PasswordTests.swift +++ b/passKitTests/PasswordTests.swift @@ -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())