Files

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
}
}