import Foundation public enum DeepLink { case webAppLinkRequest(requestID: String) } public extension DeepLink { var linkRequestID: String? { if case let DeepLink.webAppLinkRequest(requestID) = self { return requestID } return nil } static func make(from url: URL) -> DeepLink? { if url.scheme == "omnivore" { return deepLinkFromOmnivoreScheme(url: url) } return nil } private static func deepLinkFromOmnivoreScheme(url: URL) -> DeepLink? { switch url.host { case "shareExtensionRequestID": let requestID = url.path.replacingOccurrences(of: "/", with: "") return .webAppLinkRequest(requestID: requestID) default: return nil } } } // Example deep links // "omnivore://shareExtensionRequestID/sampleRequestID"