241 lines
18 KiB
Swift
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
|
|
}()
|
|
}
|