Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 11 additions & 8 deletions Sources/TelemetryDeck/Signals/SignalManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -294,17 +294,20 @@ extension SignalManager {
}

static func getServiceUrl(baseURL: URL, namespace: String? = nil) -> URL? {
let path =
if let namespace = namespace, !namespace.isEmpty {
"/v2/namespace/\(namespace)/"
} else {
"/v2/"
}
var base = baseURL.absoluteString
if !base.hasSuffix("/") {
base += "/"
}

guard let serviceURL = URL(string: path, relativeTo: baseURL)?.standardized else {
return nil
let suffix: String
if let namespace, !namespace.isEmpty {
suffix = "v2/namespace/\(namespace)/"
} else {
suffix = "v2/"
}

let serviceURL = URL(string: base + suffix)
assert(serviceURL != nil, "Failed to construct service URL from base: \(baseURL)")
return serviceURL
}
}
Expand Down
2 changes: 1 addition & 1 deletion Sources/TelemetryDeck/TelemetryClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import TVUIKit
#endif

let sdkVersion = "2.11.0"
let sdkVersion = "2.12.0"

/// Configuration for TelemetryManager
///
Expand Down
36 changes: 36 additions & 0 deletions Tests/TelemetryDeckTests/TelemetryClientTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,40 @@ struct TelemetryClientTests {
#expect(result != nil)
#expect(result?.absoluteString == "https://nom.telemetrydeck.com/v2/namespace/deltaquadrant/")
}

@Test
func `SignalManager preserves base URL path components`() {
let baseURL = URL(string: "https://example.com/array/sensors")!
let result = SignalManager.getServiceUrl(baseURL: baseURL)

#expect(result != nil)
#expect(result?.absoluteString == "https://example.com/array/sensors/v2/")
}

@Test
func `SignalManager preserves base URL path components with trailing slash`() {
let baseURL = URL(string: "https://example.com/array/sensors/")!
let result = SignalManager.getServiceUrl(baseURL: baseURL)

#expect(result != nil)
#expect(result?.absoluteString == "https://example.com/array/sensors/v2/")
}

@Test
func `SignalManager preserves base URL path components with namespace`() {
let baseURL = URL(string: "https://example.com/array/sensors")!
let result = SignalManager.getServiceUrl(baseURL: baseURL, namespace: "deltaquadrant")

#expect(result != nil)
#expect(result?.absoluteString == "https://example.com/array/sensors/v2/namespace/deltaquadrant/")
}

@Test
func `SignalManager preserves base URL path components with trailing slash and namespace`() {
let baseURL = URL(string: "https://example.com/array/sensors/")!
let result = SignalManager.getServiceUrl(baseURL: baseURL, namespace: "deltaquadrant")

#expect(result != nil)
#expect(result?.absoluteString == "https://example.com/array/sensors/v2/namespace/deltaquadrant/")
}
}
Loading