mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-17 23:18:27 +02:00
MESSENGER-2762 Initial Merge
This commit is contained in:
73
bwi/Wellknown/Wellknown+Bwi.swift
Normal file
73
bwi/Wellknown/Wellknown+Bwi.swift
Normal file
@@ -0,0 +1,73 @@
|
||||
//
|
||||
/*
|
||||
* Copyright (c) 2021 BWI GmbH
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import Foundation
|
||||
|
||||
public extension MXWellKnown {
|
||||
@objc func backupRequired() -> Bool {
|
||||
|
||||
do {
|
||||
let security = try WellknownSecurity(dict: self.jsonDictionary()["io.element.e2ee"] as! [String : Any])
|
||||
return security.backupRequired
|
||||
}
|
||||
catch {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
@objc func backupMethods() -> Array<String>? {
|
||||
|
||||
do {
|
||||
let security = try WellknownSecurity(dict: self.jsonDictionary()["io.element.e2ee"] as! [String : Any])
|
||||
return security.backupMethods
|
||||
}
|
||||
catch {
|
||||
return ["passphrase"]
|
||||
}
|
||||
}
|
||||
|
||||
@objc func isBackupMethodKeySupported() -> Bool {
|
||||
return self.backupMethods()?.contains("key") == true
|
||||
}
|
||||
|
||||
@objc func isBackupMethodPassphraseSupported() -> Bool {
|
||||
return self.backupMethods()?.contains("passphrase") != nil
|
||||
}
|
||||
|
||||
@objc func preSharingMode() -> MXKKeyPreSharingStrategy {
|
||||
do {
|
||||
let security = try WellknownSecurity(dict: self.jsonDictionary()["io.element.e2ee"] as! [String : Any])
|
||||
|
||||
guard let preSharingMode = security.preSharingMode else {
|
||||
return .whenTyping
|
||||
}
|
||||
|
||||
if preSharingMode == "on_room_opening" {
|
||||
return .whenEnteringRoom
|
||||
} else if preSharingMode == "on_typing" {
|
||||
return .whenTyping
|
||||
} else {
|
||||
return .none
|
||||
}
|
||||
}
|
||||
catch {
|
||||
return .whenTyping
|
||||
}
|
||||
|
||||
return .whenTyping
|
||||
}
|
||||
}
|
||||
34
bwi/Wellknown/WellknownHomeServer.swift
Normal file
34
bwi/Wellknown/WellknownHomeServer.swift
Normal file
@@ -0,0 +1,34 @@
|
||||
//
|
||||
/*
|
||||
* Copyright (c) 2021 BWI GmbH
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import Foundation
|
||||
|
||||
struct WellknownHomeServer {
|
||||
let baseUrl: String
|
||||
|
||||
init(dict: [String: Any]) throws {
|
||||
let jsonData = try JSONSerialization.data(withJSONObject: dict, options: [])
|
||||
let decoder = JSONDecoder()
|
||||
self = try decoder.decode(Self.self, from: jsonData)
|
||||
}
|
||||
}
|
||||
|
||||
extension WellknownHomeServer: Decodable {
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case baseUrl = "base_url"
|
||||
}
|
||||
}
|
||||
38
bwi/Wellknown/WellknownSecurity.swift
Normal file
38
bwi/Wellknown/WellknownSecurity.swift
Normal file
@@ -0,0 +1,38 @@
|
||||
//
|
||||
/*
|
||||
* Copyright (c) 2021 BWI GmbH
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import Foundation
|
||||
|
||||
struct WellknownSecurity {
|
||||
let backupRequired: Bool
|
||||
let backupMethods: Array<String>?
|
||||
let preSharingMode: String?
|
||||
|
||||
init(dict: [String: Any]) throws {
|
||||
let jsonData = try JSONSerialization.data(withJSONObject: dict, options: [])
|
||||
let decoder = JSONDecoder()
|
||||
self = try decoder.decode(Self.self, from: jsonData)
|
||||
}
|
||||
}
|
||||
|
||||
extension WellknownSecurity: Decodable {
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case backupRequired = "secure_backup_required"
|
||||
case backupMethods = "secure_backup_setup_methods"
|
||||
case preSharingMode = "outbound_keys_pre_sharing_mode"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user