element-ios/RiotSwiftUI/Modules/Authentication/Common/Service/MatrixSDK/ThreePIDModels.swift

89 lines
2.8 KiB
Swift

//
// Copyright 2022 New Vector Ltd
//
// 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
enum RegisterThreePID {
case email(String)
case msisdn(msisdn: String, countryCode: String)
}
struct ThreePIDCredentials: Codable {
var clientSecret: String?
var identityServer: String?
var sessionID: String?
enum CodingKeys: String, CodingKey {
case clientSecret = "client_secret"
case identityServer = "id_server"
case sessionID = "sid"
}
}
struct ThreePIDData {
let threePID: RegisterThreePID
let registrationResponse: RegistrationThreePIDTokenResponse
let registrationParameters: RegistrationParameters
}
// TODO: This could potentially become an MXJSONModel?
struct RegistrationThreePIDTokenResponse {
/// Required. The session ID. Session IDs are opaque strings that must consist entirely of the characters [0-9a-zA-Z.=_-].
/// Their length must not exceed 255 characters and they must not be empty.
let sessionID: String
/// An optional field containing a URL where the client must submit the validation token to, with identical parameters to the Identity
/// Service API's POST /validate/email/submitToken endpoint. The homeserver must send this token to the user (if applicable),
/// who should then be prompted to provide it to the client.
///
/// If this field is not present, the client can assume that verification will happen without the client's involvement provided
/// the homeserver advertises this specification version in the /versions response (ie: r0.5.0).
var submitURL: String? = nil
// MARK: - Additional data that may be needed
var msisdn: String? = nil
var formattedMSISDN: String? = nil
var success: Bool? = nil
enum CodingKeys: String, CodingKey {
case sessionID = "sid"
case submitURL = "submit_url"
case msisdn
case formattedMSISDN = "intl_fmt"
case success
}
}
struct ThreePIDValidationCodeBody: Codable {
let clientSecret: String
let sessionID: String
let code: String
enum CodingKeys: String, CodingKey {
case clientSecret = "client_secret"
case sessionID = "sid"
case code = "token"
}
func jsonData() throws -> Data {
try JSONEncoder().encode(self)
}
}