From 42b579070fa4176a05c201d7d5159e475b8e5cef Mon Sep 17 00:00:00 2001 From: Alex Deem Date: Sat, 8 Jun 2024 22:28:16 +1000 Subject: [PATCH] Support UUID as a StringVariableValue --- Sources/ScreamURITemplate/VariableValue.swift | 6 ++++++ Tests/ScreamURITemplateTests/Tests.swift | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/Sources/ScreamURITemplate/VariableValue.swift b/Sources/ScreamURITemplate/VariableValue.swift index de945d7..dd94079 100644 --- a/Sources/ScreamURITemplate/VariableValue.swift +++ b/Sources/ScreamURITemplate/VariableValue.swift @@ -77,3 +77,9 @@ extension UInt32: StringVariableValue {} extension UInt64: StringVariableValue {} extension UInt8: StringVariableValue {} extension Unicode.Scalar: StringVariableValue {} + +extension UUID: StringVariableValue { + public func asStringVariableValue() -> String { + uuidString + } +} diff --git a/Tests/ScreamURITemplateTests/Tests.swift b/Tests/ScreamURITemplateTests/Tests.swift index bc54bb3..2c093d0 100644 --- a/Tests/ScreamURITemplateTests/Tests.swift +++ b/Tests/ScreamURITemplateTests/Tests.swift @@ -82,6 +82,15 @@ class Tests: XCTestCase { ].contains(urlString)) } + func testUUIDVariable() throws { + let template: URITemplate = "https://api.example.com/{id}" + let variables: VariableDictionary = [ + "id": UUID(uuidString: "1740A1A9-B3AD-4AE9-954B-918CEDE95285")!, + ] + let urlString = try template.process(variables: variables) + XCTAssertEqual(urlString, "https://api.example.com/1740A1A9-B3AD-4AE9-954B-918CEDE95285") + } + func testSendable() { let template: URITemplate = "https://api.github.com/repos/{owner}/{repo}/collaborators/{username}" let sendable = template as Sendable