From 9d6073276932a7868011b0feaa55c2ff960420ca Mon Sep 17 00:00:00 2001 From: "tony.tran" <tranvutuan@hotmail.com> Date: Thu, 18 Mar 2021 13:45:10 -0400 Subject: [PATCH 1/2] Only assign non empty queryItems to URLComponents to avoid having extra ? at the end of request url + add test case --- Sources/Apollo/GraphQLGETTransformer.swift | 5 ++++- Tests/ApolloTests/GETTransformerTests.swift | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Sources/Apollo/GraphQLGETTransformer.swift b/Sources/Apollo/GraphQLGETTransformer.swift index a33d7b5856..8678a591d1 100644 --- a/Sources/Apollo/GraphQLGETTransformer.swift +++ b/Sources/Apollo/GraphQLGETTransformer.swift @@ -42,7 +42,10 @@ public struct GraphQLGETTransformer { return nil } - components.queryItems = queryItems + if queryItems.count > 0 { + components.queryItems = queryItems + } + components.percentEncodedQuery = components.percentEncodedQuery?.replacingOccurrences(of: "+", with: "%2B") diff --git a/Tests/ApolloTests/GETTransformerTests.swift b/Tests/ApolloTests/GETTransformerTests.swift index 7e75befa77..c2f36fca30 100644 --- a/Tests/ApolloTests/GETTransformerTests.swift +++ b/Tests/ApolloTests/GETTransformerTests.swift @@ -197,4 +197,12 @@ class GETTransformerTests: XCTestCase { XCTAssertEqual(url?.absoluteString, "http://localhost:8080/graphql?foo=bar&operationName=HeroName&query=query%20HeroName($episode:%20Episode)%20%7B%0A%20%20hero(episode:%20$episode)%20%7B%0A%20%20%20%20__typename%0A%20%20%20%20name%0A%20%20%7D%0A%7D&variables=%7B%22episode%22:%22EMPIRE%22%7D") } + + func testEncodingWithEmptyQueryParameter() throws { + let body: GraphQLMap = ["variables": nil] + let transformer = GraphQLGETTransformer(body: body, url: self.url) + let url = transformer.createGetURL() + + XCTAssertEqual(url?.absoluteString, "http://localhost:8080/graphql") + } } From 03365cdce1ec984d37489b1fab504b70c86fe0bd Mon Sep 17 00:00:00 2001 From: "tony.tran" <tranvutuan@hotmail.com> Date: Thu, 18 Mar 2021 16:54:01 -0400 Subject: [PATCH 2/2] Use apollo.isNotEmpty --- Sources/Apollo/GraphQLGETTransformer.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/Apollo/GraphQLGETTransformer.swift b/Sources/Apollo/GraphQLGETTransformer.swift index 8678a591d1..274b904bcc 100644 --- a/Sources/Apollo/GraphQLGETTransformer.swift +++ b/Sources/Apollo/GraphQLGETTransformer.swift @@ -42,7 +42,7 @@ public struct GraphQLGETTransformer { return nil } - if queryItems.count > 0 { + if queryItems.apollo.isNotEmpty { components.queryItems = queryItems }