TM-SGNL-iOS/SignalServiceKit/Network/OWSCountryMetadata.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

241 lines
18 KiB
Swift

//
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
public struct OWSCountryMetadata {
let name: String
let frontingDomain: OWSFrontingHost?
public let countryCode: String
public let localizedCountryName: String
private init(name: String, frontingDomain: OWSFrontingHost?, countryCode: String) {
owsAssertDebug(!name.isEmpty)
owsAssertDebug(!countryCode.isEmpty)
self.name = name
self.frontingDomain = frontingDomain
self.countryCode = countryCode
if let localizedCountryName = Locale.current.localizedString(forRegionCode: countryCode), !localizedCountryName.isEmpty {
self.localizedCountryName = localizedCountryName
} else {
self.localizedCountryName = name
}
}
public static func countryMetadata(countryCode: String) -> OWSCountryMetadata? {
owsAssertDebug(!countryCode.isEmpty)
return allCountryMetadataByCountryCode[countryCode]
}
public static let allCountryMetadatas: [OWSCountryMetadata] = [
OWSCountryMetadata(name: "Andorra", frontingDomain: nil, countryCode: "AD"),
OWSCountryMetadata(name: "United Arab Emirates", frontingDomain: .googleUae, countryCode: "AE"),
OWSCountryMetadata(name: "Afghanistan", frontingDomain: nil, countryCode: "AF"),
OWSCountryMetadata(name: "Antigua and Barbuda", frontingDomain: nil, countryCode: "AG"),
OWSCountryMetadata(name: "Anguilla", frontingDomain: nil, countryCode: "AI"),
OWSCountryMetadata(name: "Albania", frontingDomain: nil, countryCode: "AL"),
OWSCountryMetadata(name: "Armenia", frontingDomain: nil, countryCode: "AM"),
OWSCountryMetadata(name: "Angola", frontingDomain: nil, countryCode: "AO"),
OWSCountryMetadata(name: "Argentina", frontingDomain: nil, countryCode: "AR"),
OWSCountryMetadata(name: "American Samoa", frontingDomain: nil, countryCode: "AS"),
OWSCountryMetadata(name: "Austria", frontingDomain: nil, countryCode: "AT"),
OWSCountryMetadata(name: "Australia", frontingDomain: nil, countryCode: "AU"),
OWSCountryMetadata(name: "Azerbaijan", frontingDomain: nil, countryCode: "AZ"),
OWSCountryMetadata(name: "Bosnia and Herzegovina", frontingDomain: nil, countryCode: "BA"),
OWSCountryMetadata(name: "Bangladesh", frontingDomain: nil, countryCode: "BD"),
OWSCountryMetadata(name: "Belgium", frontingDomain: nil, countryCode: "BE"),
OWSCountryMetadata(name: "Burkina Faso", frontingDomain: nil, countryCode: "BF"),
OWSCountryMetadata(name: "Bulgaria", frontingDomain: nil, countryCode: "BG"),
OWSCountryMetadata(name: "Bahrain", frontingDomain: nil, countryCode: "BH"),
OWSCountryMetadata(name: "Burundi", frontingDomain: nil, countryCode: "BI"),
OWSCountryMetadata(name: "Benin", frontingDomain: nil, countryCode: "BJ"),
OWSCountryMetadata(name: "Brunei", frontingDomain: nil, countryCode: "BN"),
OWSCountryMetadata(name: "Bolivia", frontingDomain: nil, countryCode: "BO"),
OWSCountryMetadata(name: "Brazil", frontingDomain: nil, countryCode: "BR"),
OWSCountryMetadata(name: "Bahamas", frontingDomain: nil, countryCode: "BS"),
OWSCountryMetadata(name: "Bhutan", frontingDomain: nil, countryCode: "BT"),
OWSCountryMetadata(name: "Botswana", frontingDomain: nil, countryCode: "BW"),
OWSCountryMetadata(name: "Belarus", frontingDomain: nil, countryCode: "BY"),
OWSCountryMetadata(name: "Belize", frontingDomain: nil, countryCode: "BZ"),
OWSCountryMetadata(name: "Canada", frontingDomain: nil, countryCode: "CA"),
OWSCountryMetadata(name: "Cambodia", frontingDomain: nil, countryCode: "KH"),
OWSCountryMetadata(name: "Cocos (Keeling) Islands", frontingDomain: nil, countryCode: "CC"),
OWSCountryMetadata(name: "Democratic Republic of the Congo", frontingDomain: nil, countryCode: "CD"),
OWSCountryMetadata(name: "Central African Republic", frontingDomain: nil, countryCode: "CF"),
OWSCountryMetadata(name: "Republic of the Congo", frontingDomain: nil, countryCode: "CG"),
OWSCountryMetadata(name: "Switzerland", frontingDomain: nil, countryCode: "CH"),
OWSCountryMetadata(name: "Ivory Coast", frontingDomain: nil, countryCode: "CI"),
OWSCountryMetadata(name: "Cook Islands", frontingDomain: nil, countryCode: "CK"),
OWSCountryMetadata(name: "Chile", frontingDomain: nil, countryCode: "CL"),
OWSCountryMetadata(name: "Cameroon", frontingDomain: nil, countryCode: "CM"),
OWSCountryMetadata(name: "China", frontingDomain: nil, countryCode: "CN"),
OWSCountryMetadata(name: "Colombia", frontingDomain: nil, countryCode: "CO"),
OWSCountryMetadata(name: "Costa Rica", frontingDomain: nil, countryCode: "CR"),
OWSCountryMetadata(name: "Cuba", frontingDomain: .fastly, countryCode: "CU"),
OWSCountryMetadata(name: "Cape Verde", frontingDomain: nil, countryCode: "CV"),
OWSCountryMetadata(name: "Christmas Island", frontingDomain: nil, countryCode: "CX"),
OWSCountryMetadata(name: "Cyprus", frontingDomain: nil, countryCode: "CY"),
OWSCountryMetadata(name: "Czech Republic", frontingDomain: nil, countryCode: "CZ"),
OWSCountryMetadata(name: "Germany", frontingDomain: nil, countryCode: "DE"),
OWSCountryMetadata(name: "Djibouti", frontingDomain: nil, countryCode: "DJ"),
OWSCountryMetadata(name: "Denmark", frontingDomain: nil, countryCode: "DK"),
OWSCountryMetadata(name: "Dominica", frontingDomain: nil, countryCode: "DM"),
OWSCountryMetadata(name: "Dominican Republic", frontingDomain: nil, countryCode: "DO"),
OWSCountryMetadata(name: "Algeria", frontingDomain: nil, countryCode: "DZ"),
OWSCountryMetadata(name: "Ecuador", frontingDomain: nil, countryCode: "EC"),
OWSCountryMetadata(name: "Estonia", frontingDomain: nil, countryCode: "EE"),
OWSCountryMetadata(name: "Egypt", frontingDomain: .googleEgypt, countryCode: "EG"),
OWSCountryMetadata(name: "Spain", frontingDomain: nil, countryCode: "ES"),
OWSCountryMetadata(name: "Ethiopia", frontingDomain: nil, countryCode: "ET"),
OWSCountryMetadata(name: "Finland", frontingDomain: nil, countryCode: "FI"),
OWSCountryMetadata(name: "Fiji", frontingDomain: nil, countryCode: "FJ"),
OWSCountryMetadata(name: "Federated States of Micronesia", frontingDomain: nil, countryCode: "FM"),
OWSCountryMetadata(name: "France", frontingDomain: nil, countryCode: "FR"),
OWSCountryMetadata(name: "Gabon", frontingDomain: nil, countryCode: "GA"),
OWSCountryMetadata(name: "Georgia", frontingDomain: nil, countryCode: "GE"),
OWSCountryMetadata(name: "French Guiana", frontingDomain: nil, countryCode: "GF"),
OWSCountryMetadata(name: "Guernsey", frontingDomain: nil, countryCode: "GG"),
OWSCountryMetadata(name: "Ghana", frontingDomain: nil, countryCode: "GH"),
OWSCountryMetadata(name: "Gibraltar", frontingDomain: nil, countryCode: "GI"),
OWSCountryMetadata(name: "Greenland", frontingDomain: nil, countryCode: "GL"),
OWSCountryMetadata(name: "Gambia", frontingDomain: nil, countryCode: "GM"),
OWSCountryMetadata(name: "Guadeloupe", frontingDomain: nil, countryCode: "GP"),
OWSCountryMetadata(name: "Greece", frontingDomain: nil, countryCode: "GR"),
OWSCountryMetadata(name: "Guatemala", frontingDomain: nil, countryCode: "GT"),
OWSCountryMetadata(name: "Guyana", frontingDomain: nil, countryCode: "GY"),
OWSCountryMetadata(name: "Hong Kong", frontingDomain: nil, countryCode: "HK"),
OWSCountryMetadata(name: "Honduras", frontingDomain: nil, countryCode: "HN"),
OWSCountryMetadata(name: "Croatia", frontingDomain: nil, countryCode: "HR"),
OWSCountryMetadata(name: "Haiti", frontingDomain: nil, countryCode: "HT"),
OWSCountryMetadata(name: "Hungary", frontingDomain: nil, countryCode: "HU"),
OWSCountryMetadata(name: "Indonesia", frontingDomain: nil, countryCode: "ID"),
OWSCountryMetadata(name: "Iraq", frontingDomain: nil, countryCode: "IQ"),
OWSCountryMetadata(name: "Ireland", frontingDomain: nil, countryCode: "IE"),
OWSCountryMetadata(name: "Israel", frontingDomain: nil, countryCode: "IL"),
OWSCountryMetadata(name: "Isle of Man", frontingDomain: nil, countryCode: "IM"),
OWSCountryMetadata(name: "India", frontingDomain: nil, countryCode: "IN"),
OWSCountryMetadata(name: "British Indian Ocean Territory", frontingDomain: nil, countryCode: "IO"),
OWSCountryMetadata(name: "Iceland", frontingDomain: nil, countryCode: "IS"),
OWSCountryMetadata(name: "Italy", frontingDomain: nil, countryCode: "IT"),
OWSCountryMetadata(name: "Jersey", frontingDomain: nil, countryCode: "JE"),
OWSCountryMetadata(name: "Jamaica", frontingDomain: nil, countryCode: "JM"),
OWSCountryMetadata(name: "Jordan", frontingDomain: nil, countryCode: "JO"),
OWSCountryMetadata(name: "Japan", frontingDomain: nil, countryCode: "JP"),
OWSCountryMetadata(name: "Kenya", frontingDomain: nil, countryCode: "KE"),
OWSCountryMetadata(name: "Kiribati", frontingDomain: nil, countryCode: "KI"),
OWSCountryMetadata(name: "Kyrgyzstan", frontingDomain: nil, countryCode: "KG"),
OWSCountryMetadata(name: "South Korea", frontingDomain: nil, countryCode: "KR"),
OWSCountryMetadata(name: "Kuwait", frontingDomain: nil, countryCode: "KW"),
OWSCountryMetadata(name: "Kazakhstan", frontingDomain: nil, countryCode: "KZ"),
OWSCountryMetadata(name: "Laos", frontingDomain: nil, countryCode: "LA"),
OWSCountryMetadata(name: "Lebanon", frontingDomain: nil, countryCode: "LB"),
OWSCountryMetadata(name: "Saint Lucia", frontingDomain: nil, countryCode: "LC"),
OWSCountryMetadata(name: "Liechtenstein", frontingDomain: nil, countryCode: "LI"),
OWSCountryMetadata(name: "Sri Lanka", frontingDomain: nil, countryCode: "LK"),
OWSCountryMetadata(name: "Lesotho", frontingDomain: nil, countryCode: "LS"),
OWSCountryMetadata(name: "Lithuania", frontingDomain: nil, countryCode: "LT"),
OWSCountryMetadata(name: "Luxembourg", frontingDomain: nil, countryCode: "LU"),
OWSCountryMetadata(name: "Latvia", frontingDomain: nil, countryCode: "LV"),
OWSCountryMetadata(name: "Libya", frontingDomain: nil, countryCode: "LY"),
OWSCountryMetadata(name: "Morocco", frontingDomain: nil, countryCode: "MA"),
OWSCountryMetadata(name: "Moldova", frontingDomain: nil, countryCode: "MD"),
OWSCountryMetadata(name: "Montenegro", frontingDomain: nil, countryCode: "ME"),
OWSCountryMetadata(name: "Madagascar", frontingDomain: nil, countryCode: "MG"),
OWSCountryMetadata(name: "Macedonia", frontingDomain: nil, countryCode: "MK"),
OWSCountryMetadata(name: "Mali", frontingDomain: nil, countryCode: "ML"),
OWSCountryMetadata(name: "Myanmar", frontingDomain: nil, countryCode: "MM"),
OWSCountryMetadata(name: "Mongolia", frontingDomain: nil, countryCode: "MN"),
OWSCountryMetadata(name: "Montserrat", frontingDomain: nil, countryCode: "MS"),
OWSCountryMetadata(name: "Malta", frontingDomain: nil, countryCode: "MT"),
OWSCountryMetadata(name: "Mauritius", frontingDomain: nil, countryCode: "MU"),
OWSCountryMetadata(name: "Maldives", frontingDomain: nil, countryCode: "MV"),
OWSCountryMetadata(name: "Malawi", frontingDomain: nil, countryCode: "MW"),
OWSCountryMetadata(name: "Mexico", frontingDomain: nil, countryCode: "MX"),
OWSCountryMetadata(name: "Malaysia", frontingDomain: nil, countryCode: "MY"),
OWSCountryMetadata(name: "Mozambique", frontingDomain: nil, countryCode: "MZ"),
OWSCountryMetadata(name: "Namibia", frontingDomain: nil, countryCode: "NA"),
OWSCountryMetadata(name: "Niger", frontingDomain: nil, countryCode: "NE"),
OWSCountryMetadata(name: "Norfolk Island", frontingDomain: nil, countryCode: "NF"),
OWSCountryMetadata(name: "Nigeria", frontingDomain: nil, countryCode: "NG"),
OWSCountryMetadata(name: "Nicaragua", frontingDomain: nil, countryCode: "NI"),
OWSCountryMetadata(name: "Netherlands", frontingDomain: nil, countryCode: "NL"),
OWSCountryMetadata(name: "Norway", frontingDomain: nil, countryCode: "NO"),
OWSCountryMetadata(name: "Nepal", frontingDomain: nil, countryCode: "NP"),
OWSCountryMetadata(name: "Nauru", frontingDomain: nil, countryCode: "NR"),
OWSCountryMetadata(name: "Niue", frontingDomain: nil, countryCode: "NU"),
OWSCountryMetadata(name: "New Zealand", frontingDomain: nil, countryCode: "NZ"),
OWSCountryMetadata(name: "Oman", frontingDomain: .googleOman, countryCode: "OM"),
OWSCountryMetadata(name: "Pakistan", frontingDomain: .googlePakistan, countryCode: "PK"),
OWSCountryMetadata(name: "Panama", frontingDomain: nil, countryCode: "PA"),
OWSCountryMetadata(name: "Peru", frontingDomain: nil, countryCode: "PE"),
OWSCountryMetadata(name: "Philippines", frontingDomain: nil, countryCode: "PH"),
OWSCountryMetadata(name: "Poland", frontingDomain: nil, countryCode: "PL"),
OWSCountryMetadata(name: "Papua New Guinea", frontingDomain: nil, countryCode: "PG"),
OWSCountryMetadata(name: "Pitcairn Islands", frontingDomain: nil, countryCode: "PN"),
OWSCountryMetadata(name: "Puerto Rico", frontingDomain: nil, countryCode: "PR"),
OWSCountryMetadata(name: "Palestine[4]", frontingDomain: nil, countryCode: "PS"),
OWSCountryMetadata(name: "Portugal", frontingDomain: nil, countryCode: "PT"),
OWSCountryMetadata(name: "Paraguay", frontingDomain: nil, countryCode: "PY"),
OWSCountryMetadata(name: "Qatar", frontingDomain: .googleQatar, countryCode: "QA"),
OWSCountryMetadata(name: "Romania", frontingDomain: nil, countryCode: "RO"),
OWSCountryMetadata(name: "Serbia", frontingDomain: nil, countryCode: "RS"),
OWSCountryMetadata(name: "Russia", frontingDomain: .fastly, countryCode: "RU"),
OWSCountryMetadata(name: "Rwanda", frontingDomain: nil, countryCode: "RW"),
OWSCountryMetadata(name: "Saudi Arabia", frontingDomain: nil, countryCode: "SA"),
OWSCountryMetadata(name: "Solomon Islands", frontingDomain: nil, countryCode: "SB"),
OWSCountryMetadata(name: "Seychelles", frontingDomain: nil, countryCode: "SC"),
OWSCountryMetadata(name: "Sweden", frontingDomain: nil, countryCode: "SE"),
OWSCountryMetadata(name: "Singapore", frontingDomain: nil, countryCode: "SG"),
OWSCountryMetadata(name: "Saint Helena, Ascension and Tristan da Cunha", frontingDomain: nil, countryCode: "SH"),
OWSCountryMetadata(name: "Slovenia", frontingDomain: nil, countryCode: "SI"),
OWSCountryMetadata(name: "Slovakia", frontingDomain: nil, countryCode: "SK"),
OWSCountryMetadata(name: "Sierra Leone", frontingDomain: nil, countryCode: "SL"),
OWSCountryMetadata(name: "Senegal", frontingDomain: nil, countryCode: "SN"),
OWSCountryMetadata(name: "San Marino", frontingDomain: nil, countryCode: "SM"),
OWSCountryMetadata(name: "Somalia", frontingDomain: nil, countryCode: "SO"),
OWSCountryMetadata(name: "São Tomé and Príncipe", frontingDomain: nil, countryCode: "ST"),
OWSCountryMetadata(name: "Suriname", frontingDomain: nil, countryCode: "SR"),
OWSCountryMetadata(name: "El Salvador", frontingDomain: nil, countryCode: "SV"),
OWSCountryMetadata(name: "Chad", frontingDomain: nil, countryCode: "TD"),
OWSCountryMetadata(name: "Togo", frontingDomain: nil, countryCode: "TG"),
OWSCountryMetadata(name: "Thailand", frontingDomain: nil, countryCode: "TH"),
OWSCountryMetadata(name: "Tajikistan", frontingDomain: nil, countryCode: "TJ"),
OWSCountryMetadata(name: "Tokelau", frontingDomain: nil, countryCode: "TK"),
OWSCountryMetadata(name: "Timor-Leste", frontingDomain: nil, countryCode: "TL"),
OWSCountryMetadata(name: "Turkmenistan", frontingDomain: nil, countryCode: "TM"),
OWSCountryMetadata(name: "Tonga", frontingDomain: nil, countryCode: "TO"),
OWSCountryMetadata(name: "Tunisia", frontingDomain: nil, countryCode: "TN"),
OWSCountryMetadata(name: "Turkey", frontingDomain: nil, countryCode: "TR"),
OWSCountryMetadata(name: "Trinidad and Tobago", frontingDomain: nil, countryCode: "TT"),
OWSCountryMetadata(name: "Taiwan", frontingDomain: nil, countryCode: "TW"),
OWSCountryMetadata(name: "Tanzania", frontingDomain: nil, countryCode: "TZ"),
OWSCountryMetadata(name: "Ukraine", frontingDomain: nil, countryCode: "UA"),
OWSCountryMetadata(name: "Uganda", frontingDomain: nil, countryCode: "UG"),
OWSCountryMetadata(name: "United States", frontingDomain: nil, countryCode: "US"),
OWSCountryMetadata(name: "Uruguay", frontingDomain: nil, countryCode: "UY"),
OWSCountryMetadata(name: "Uzbekistan", frontingDomain: .googleUzbekistan, countryCode: "UZ"),
OWSCountryMetadata(name: "Saint Vincent and the Grenadines", frontingDomain: nil, countryCode: "VC"),
OWSCountryMetadata(name: "Venezuela", frontingDomain: .googleVenezuela, countryCode: "VE"),
OWSCountryMetadata(name: "British Virgin Islands", frontingDomain: nil, countryCode: "VG"),
OWSCountryMetadata(name: "United States Virgin Islands", frontingDomain: nil, countryCode: "VI"),
OWSCountryMetadata(name: "Vietnam", frontingDomain: nil, countryCode: "VN"),
OWSCountryMetadata(name: "Vanuatu", frontingDomain: nil, countryCode: "VU"),
OWSCountryMetadata(name: "Samoa", frontingDomain: nil, countryCode: "WS"),
OWSCountryMetadata(name: "South Africa", frontingDomain: nil, countryCode: "ZA"),
OWSCountryMetadata(name: "Zambia", frontingDomain: nil, countryCode: "ZM"),
OWSCountryMetadata(name: "Zimbabwe", frontingDomain: nil, countryCode: "ZW"),
].sorted { $0.localizedCountryName < $1.localizedCountryName }
private static let allCountryMetadataByCountryCode = {
var result = [String: OWSCountryMetadata]()
for metadata in allCountryMetadatas {
result[metadata.countryCode] = metadata
}
return result
}()
}