Skip to content

Commit 4b56a32

Browse files
author
Philip Niedertscheider
committed
Removed duplicate parameter encoding
1 parent cec6f2f commit 4b56a32

2 files changed

Lines changed: 19 additions & 3 deletions

File tree

Sources/Postie/Encoder/RequestEncoding.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ internal class RequestEncoding: Encoder {
8585
return pathParameters.reduce(path) { partialResult, parameter in
8686
let key = parameter.key
8787
let value = parameter.value
88-
let replacement = value.serialized.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? value.serialized
88+
let replacement = value.serialized
8989

9090
return partialResult.replacingOccurrences(of: "{\(key)}", with: replacement)
9191
}

Tests/PostieTests/RequestPathParameterCodingTests.swift

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ class RequestPathParameterCodingTests: XCTestCase {
109109
guard let urlRequest = encodeRequest(request: request) else {
110110
return
111111
}
112-
XCTAssertEqual(urlRequest.url?.path, "/some%20name")
112+
XCTAssertEqual(urlRequest.url?.absoluteString, "https://local.url/some%20name")
113113
}
114114

115115
func testEncoding_stringParameterCustomNaming_shouldUseCustomName() {
@@ -125,7 +125,7 @@ class RequestPathParameterCodingTests: XCTestCase {
125125
guard let urlRequest = encodeRequest(request: request) else {
126126
return
127127
}
128-
XCTAssertEqual(urlRequest.url?.path, "/some%20name")
128+
XCTAssertEqual(urlRequest.url?.absoluteString, "https://local.url/some%20name")
129129
}
130130

131131
func testEncoding_intParameterCustomNaming_shouldUseCustomName() {
@@ -205,6 +205,22 @@ class RequestPathParameterCodingTests: XCTestCase {
205205
XCTAssertEqual(urlRequest.url?.path, "/321")
206206
}
207207

208+
func testEncoding_paramValueContainsUnescapedCharacters_shouldEscapeCharacters() {
209+
struct Request: Encodable {
210+
211+
typealias Response = EmptyResponse
212+
213+
@RequestPath var path = "/{id}"
214+
@RequestPathParameter var id: String?
215+
}
216+
var request = Request()
217+
request.id = "{ABC}"
218+
guard let urlRequest = encodeRequest(request: request) else {
219+
return
220+
}
221+
XCTAssertEqual(urlRequest.url?.absoluteString, "https://local.url/%7BABC%7D")
222+
}
223+
208224
internal func encodeRequest<T: Encodable>(request: T, file: StaticString = #filePath, line: UInt = #line) -> URLRequest? {
209225
let encoder = RequestEncoder(baseURL: baseURL)
210226
let encoded: URLRequest

0 commit comments

Comments
 (0)