Support folder operations

Example:
  - add: a/b/c/d
  - delete: a/b/c/d
  - move: a/b/c/d -> a/b/c/d/e
This commit is contained in:
Bob Sun 2017-04-23 10:03:09 -07:00
parent b1ef8a343f
commit d8ecd1e889
No known key found for this signature in database
GPG key ID: 1F86BA2052FED3B4
8 changed files with 213 additions and 141 deletions

View file

@ -20,6 +20,15 @@ class Password {
static let otpKeywords = ["otp_secret", "otp_type", "otp_algorithm", "otp_period", "otp_digits", "otp_counter", "otpauth"]
var name = ""
var url: URL?
var namePath: String {
get {
if url == nil {
return ""
}
return url!.deletingPathExtension().path
}
}
var password = ""
var additions = [String: String]()
var additionKeys = [String]()
@ -47,19 +56,20 @@ class Password {
}
}
init(name: String, plainText: String) {
self.initEverything(name: name, plainText: plainText)
init(name: String, url: URL?, plainText: String) {
self.initEverything(name: name, url: url, plainText: plainText)
}
func updatePassword(name: String, plainText: String) {
if self.plainText != plainText {
self.initEverything(name: name, plainText: plainText)
func updatePassword(name: String, url: URL?, plainText: String) {
if self.plainText != plainText || self.url != url {
self.initEverything(name: name, url: url, plainText: plainText)
changed = true
}
}
private func initEverything(name: String, plainText: String) {
private func initEverything(name: String, url: URL?, plainText: String) {
self.name = name
self.url = url
self.plainText = plainText
self.additions.removeAll()
self.additionKeys.removeAll()
@ -322,7 +332,7 @@ class Password {
if newOtpauth != nil {
lines.append(newOtpauth!)
}
self.updatePassword(name: self.name, plainText: lines.joined(separator: "\n"))
self.updatePassword(name: self.name, url: self.url, plainText: lines.joined(separator: "\n"))
// get and return the password
return self.otpToken?.currentPassword