mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-07 16:28:38 +09:00
55 lines
1.5 KiB
Swift
55 lines
1.5 KiB
Swift
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
import Foundation
|
|
import Shared
|
|
import SwiftyJSON
|
|
|
|
open class KeysPayload: CleartextPayloadJSON {
|
|
override open func isValid() -> Bool {
|
|
return super.isValid() &&
|
|
self["default"].isArray()
|
|
}
|
|
|
|
fileprivate func keyBundleFromPair(_ input: JSON) -> KeyBundle? {
|
|
if let pair: [JSON] = input.array {
|
|
if let encKey = pair[0].string {
|
|
if let hmacKey = pair[1].string {
|
|
return KeyBundle(encKeyB64: encKey, hmacKeyB64: hmacKey)
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
var defaultKeys: KeyBundle? {
|
|
return self.keyBundleFromPair(self["default"])
|
|
}
|
|
|
|
var collectionKeys: [String: KeyBundle] {
|
|
if let collections: [String: JSON] = self["collections"].dictionary {
|
|
return optFilter(mapValues(collections, f: self.keyBundleFromPair))
|
|
}
|
|
return [:]
|
|
}
|
|
|
|
override open func equalPayloads(_ obj: CleartextPayloadJSON) -> Bool {
|
|
if !(obj is KeysPayload) {
|
|
return false
|
|
}
|
|
|
|
if !super.equalPayloads(obj) {
|
|
return false
|
|
}
|
|
|
|
let p = obj as! KeysPayload
|
|
if p.defaultKeys != self.defaultKeys {
|
|
return false
|
|
}
|
|
|
|
// TODO: check collections.
|
|
|
|
return true
|
|
}
|
|
}
|