     fileprivate var platformDetails: String
     fileprivate var appVersion: String
     fileprivate var uaBitMobile: String
-
+    
     init(product: String, systemInfo: String, platform: String, platformDetails: String, uaBitMobile: String, appVersion: String) {
         self.product = product
         self.systemInfo = systemInfo

        self.appVersion = appVersion
    }
    
    public func userAgent() -> String {
        let userAgentItems = [product, systemInfo, platform, platformDetails, uaBitMobile, appVersion]
        return removeEmptyComponentsAndJoin(uaItems: userAgentItems)
    }
    
    public static func buildtUserAgent() -> ZypeUserAgentBuilder {
        return ZypeUserAgentBuilder(product: UserAgent.product, systemInfo: "(\(UIDevice.current.model.replacingOccurrences(of: " ", with: "")),3; CPU tvOS \(UIDevice.current.systemVersion.replacingOccurrences(of: ".", with: "_")) like Mac OS X)", platform: UserAgent.platform, platformDetails: UserAgent.platformDetails, uaBitMobile: UserAgent.uaBitMobile, appVersion: ZypeUserAgentBuilder.appNameAndVersion())
    }

    /// Helper method to remove the empty components from user agent string that contain only whitespaces or are just empty
    private func removeEmptyComponentsAndJoin(uaItems: [String]) -> String {
        return uaItems.filter{ !$0.isEmpty }.joined(separator: " ")

    public static let uaBitMobile = "Mobile/15E148"
}

@objc public class ZypeUserAgentBuilder: NSObject {
    // User agent components
    fileprivate var product: String
    fileprivate var systemInfo: String
