// // KeymanHosts.swift // KeymanEngine // // Created by Joshua Horton on 7/20/20. // Copyright © 2020 SIL International. All rights reserved. import Foundation /** * Defines constant-like definitions for Keyman's websites dependent upon the compile-time version * of the KeymanEngine framework. * * Note that as a result, 'alpha', 'beta', and 'stable' versions of KeymanEngine may point to different * sites. */ public enum KeymanHosts { /** * Used to enable '.local' variants of the endpoints for use in local development testing. */ internal static let useLocal = false // This should never be used outside of the corresponding `static var`... // save for use in automated testing. internal static func getApiSiteURL(forTier: Version.Tier, useLocal: Bool) -> URL { if useLocal { return URL.init(string: "http://api.keyman.com.local")! } else { switch forTier { case .alpha: fallthrough case .beta: return URL.init(string: "https://api.keyman.com")! // #7227 disabling: "https://api.keyman-staging.com")! case .stable: return URL.init(string: "https://api.keyman.com")! } } } /** * Used for package-version and model queries. */ public static var API_KEYMAN_COM: URL { return getApiSiteURL(forTier: Version.currentTagged.tier ?? .stable, useLocal: useLocal) } // This should never be used outside of the corresponding `static var`... // save for use in automated testing. internal static func getHelpSiteURL(forTier: Version.Tier, useLocal: Bool) -> URL { if useLocal { return URL.init(string: "http://help.keyman.com.local")! } else { switch forTier { case .alpha: fallthrough case .beta: return URL.init(string: "https://help.keyman.com")! // #7227 disabling: "https://help.keyman-staging.com")! case .stable: return URL.init(string: "https://help.keyman.com")! } } } /** * Used for online help. */ public static var HELP_KEYMAN_COM: URL { return getHelpSiteURL(forTier: Version.currentTagged.tier ?? .stable, useLocal: useLocal) } // This should never be used outside of the corresponding `static var`... // save for use in automated testing. internal static func getMainSiteURL(forTier: Version.Tier, useLocal: Bool) -> URL { if useLocal { return URL.init(string: "http://keyman.com.local")! } else { switch forTier { case .alpha: fallthrough case .beta: return URL.init(string: "https://keyman.com")! // #7227 disabling: "https://keyman-staging.com")! case .stable: return URL.init(string: "https://keyman.com")! } } } /** * Used for keyboard searches and resource sharing links. */ public static var KEYMAN_COM: URL { return getMainSiteURL(forTier: Version.currentTagged.tier ?? .stable, useLocal: useLocal) } }