108 lines
2.6 KiB
Swift
108 lines
2.6 KiB
Swift
//
|
|
// ExtradataCodable.swift
|
|
// PrivadoVPN
|
|
//
|
|
// Created by Lizaveta Malinouskaya on 1.11.21.
|
|
// Copyright © 2021 Privado LLC. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
enum CTAScreenType: Encodable, CustomStringConvertible {
|
|
case main
|
|
case preferences
|
|
case serversList
|
|
case createAccount
|
|
case messages
|
|
case menu
|
|
case trafficProgress
|
|
case overlay
|
|
var description: String {
|
|
switch self {
|
|
case .main:
|
|
return "main"
|
|
case .preferences:
|
|
return "preferences"
|
|
case .serversList:
|
|
return "serversList"
|
|
case .createAccount:
|
|
return "createAccount"
|
|
case .messages:
|
|
return "messages"
|
|
case .menu:
|
|
return "menu"
|
|
case .trafficProgress:
|
|
return "trafficProgress"
|
|
case .overlay:
|
|
return "overlay"
|
|
}
|
|
}
|
|
}
|
|
|
|
enum ProtocolsDescription: CustomStringConvertible {
|
|
case wireguard
|
|
case ikev
|
|
case openvpn
|
|
case automatic
|
|
var description: String {
|
|
switch self {
|
|
case .automatic:
|
|
return "AUTOMATIC"
|
|
case .ikev:
|
|
return "IKEV2"
|
|
case .openvpn:
|
|
return "OPENVPN"
|
|
case .wireguard:
|
|
return "WIREGUARD"
|
|
}
|
|
}
|
|
}
|
|
|
|
struct Location: Codable {
|
|
let city: String
|
|
let country: String
|
|
}
|
|
|
|
// swiftlint:disable identifier_name
|
|
struct CTAClick: Encodable {
|
|
let screen_id: String
|
|
/// set screen_id value with CTAScreenType.type.description
|
|
public init(screenType: CTAScreenType) {
|
|
self.screen_id = screenType.description
|
|
}
|
|
}
|
|
// swiftlint:enable identifier_name
|
|
|
|
struct SaveSettingsModel: Encodable, Equatable {
|
|
let killswitch: Bool
|
|
let autoconnect: Bool
|
|
let autoconnectvalue: String
|
|
let crashreporting: Bool
|
|
let proto: String
|
|
static public func == (lhs: SaveSettingsModel, rhs: SaveSettingsModel) -> Bool {
|
|
if lhs.killswitch == rhs.killswitch &&
|
|
lhs.autoconnect == rhs.autoconnect &&
|
|
lhs.crashreporting == rhs.crashreporting &&
|
|
lhs.proto == rhs.proto &&
|
|
lhs.autoconnectvalue == rhs.autoconnectvalue {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
}
|
|
|
|
extension Encodable {
|
|
var jsonString: String {
|
|
var str = ""
|
|
do {
|
|
try str = String(decoding: JSONEncoder().encode(self), as: UTF8.self)
|
|
if self is SaveSettingsModel {
|
|
try str = str.replace("proto", replacement: "protocol")
|
|
}
|
|
} catch let parseError {
|
|
print(parseError)
|
|
}
|
|
return str
|
|
}
|
|
}
|