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
     }