import Foundation import Utils public enum AppEnvironment: String { case local case dev case prod case demo case test public static let initialAppEnvironment: AppEnvironment = { #if DEBUG #if targetEnvironment(simulator) return .demo // could also return .local here #else return .demo #endif #else return .prod #endif }() } private let devBaseURL = "https://api-dev.omnivore.app" private let demoBaseURL = "https://api-demo.omnivore.app" private let prodBaseURL = "https://api-prod.omnivore.app" private let devWebURL = "https://web-dev.omnivore.app" private let demoWebURL = "https://demo.omnivore.app" private let prodWebURL = "https://omnivore.app" private let devHighlightsServerURL = "https://highlights-dev.omnivore.app" private let demoHighlightsServerURL = "https://highlights-demo.omnivore.app" private let prodHighlightsServerURL = "https://highlights.omnivore.app" public extension AppEnvironment { var graphqlPath: String { "\(serverBaseURL.absoluteString)/api/graphql" } var serverBaseURL: URL { switch self { case .dev: return URL(string: devBaseURL)! case .demo: return URL(string: demoBaseURL)! case .prod: return URL(string: prodBaseURL)! case .test, .local: return URL(string: "http://localhost:4000")! } } var webAppBaseURL: URL { switch self { case .dev: return URL(string: devWebURL)! case .demo: return URL(string: demoWebURL)! case .prod: return URL(string: prodWebURL)! case .test, .local: return URL(string: "http://localhost:3000")! } } var highlightsServerBaseURL: URL { switch self { case .dev: return URL(string: devHighlightsServerURL)! case .demo: return URL(string: demoHighlightsServerURL)! case .prod: return URL(string: prodHighlightsServerURL)! case .test, .local: return URL(string: "http://localhost:8080")! } } }