From 4f37a9e84c75b7268f2f3b92d737c07a7520331a Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Thu, 11 Apr 2024 22:40:06 +0900 Subject: [PATCH 1/6] fix label name --- src/targets/swift/urlsession/client.ts | 2 +- .../swift/urlsession/fixtures/application-form-encoded.swift | 2 +- src/targets/swift/urlsession/fixtures/application-json.swift | 2 +- src/targets/swift/urlsession/fixtures/cookies.swift | 2 +- src/targets/swift/urlsession/fixtures/custom-method.swift | 2 +- src/targets/swift/urlsession/fixtures/full.swift | 2 +- src/targets/swift/urlsession/fixtures/headers.swift | 2 +- src/targets/swift/urlsession/fixtures/http-insecure.swift | 2 +- src/targets/swift/urlsession/fixtures/indent-option.swift | 2 +- src/targets/swift/urlsession/fixtures/json-null-value.swift | 2 +- src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift | 2 +- src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift | 2 +- src/targets/swift/urlsession/fixtures/multipart-data.swift | 2 +- src/targets/swift/urlsession/fixtures/multipart-file.swift | 2 +- .../urlsession/fixtures/multipart-form-data-no-params.swift | 2 +- src/targets/swift/urlsession/fixtures/multipart-form-data.swift | 2 +- src/targets/swift/urlsession/fixtures/nested.swift | 2 +- src/targets/swift/urlsession/fixtures/postdata-malformed.swift | 2 +- src/targets/swift/urlsession/fixtures/pretty-option.swift | 2 +- src/targets/swift/urlsession/fixtures/query-encoded.swift | 2 +- src/targets/swift/urlsession/fixtures/query.swift | 2 +- src/targets/swift/urlsession/fixtures/short.swift | 2 +- src/targets/swift/urlsession/fixtures/text-plain.swift | 2 +- src/targets/swift/urlsession/fixtures/timeout-option.swift | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/targets/swift/urlsession/client.ts b/src/targets/swift/urlsession/client.ts index e980cf473..b3f195674 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -136,7 +136,7 @@ export const urlsession: Client = { blank(); // Retrieving the shared session will be less verbose than creating a new one. - push('let (data, response) = try await URLSession.shared.data(with: request)'); + push('let (data, response) = try await URLSession.shared.data(for: request)'); push('print(String(decoding: data, as: UTF8.self))'); blank(); diff --git a/src/targets/swift/urlsession/fixtures/application-form-encoded.swift b/src/targets/swift/urlsession/fixtures/application-form-encoded.swift index 5fcc2d295..718454988 100644 --- a/src/targets/swift/urlsession/fixtures/application-form-encoded.swift +++ b/src/targets/swift/urlsession/fixtures/application-form-encoded.swift @@ -13,5 +13,5 @@ request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/application-json.swift b/src/targets/swift/urlsession/fixtures/application-json.swift index 7f97c825d..6b9442349 100644 --- a/src/targets/swift/urlsession/fixtures/application-json.swift +++ b/src/targets/swift/urlsession/fixtures/application-json.swift @@ -20,5 +20,5 @@ request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/cookies.swift b/src/targets/swift/urlsession/fixtures/cookies.swift index 483e7bbe5..86b7798d8 100644 --- a/src/targets/swift/urlsession/fixtures/cookies.swift +++ b/src/targets/swift/urlsession/fixtures/cookies.swift @@ -9,5 +9,5 @@ var request = URLRequest(url: URL(string: "https://httpbin.org/cookies")!) request.httpMethod = "GET" request.allHTTPHeaderFields = headers -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/custom-method.swift b/src/targets/swift/urlsession/fixtures/custom-method.swift index 5bd19a3bd..e3cbfb024 100644 --- a/src/targets/swift/urlsession/fixtures/custom-method.swift +++ b/src/targets/swift/urlsession/fixtures/custom-method.swift @@ -6,5 +6,5 @@ import Foundation var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) request.httpMethod = "PROPFIND" -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/full.swift b/src/targets/swift/urlsession/fixtures/full.swift index 39cba3459..2c3b03003 100644 --- a/src/targets/swift/urlsession/fixtures/full.swift +++ b/src/targets/swift/urlsession/fixtures/full.swift @@ -16,5 +16,5 @@ request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/headers.swift b/src/targets/swift/urlsession/fixtures/headers.swift index 07601f12c..a69cac36a 100644 --- a/src/targets/swift/urlsession/fixtures/headers.swift +++ b/src/targets/swift/urlsession/fixtures/headers.swift @@ -14,5 +14,5 @@ var request = URLRequest(url: URL(string: "https://httpbin.org/headers")!) request.httpMethod = "GET" request.allHTTPHeaderFields = headers -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/http-insecure.swift b/src/targets/swift/urlsession/fixtures/http-insecure.swift index 42687b86f..972b3d4bd 100644 --- a/src/targets/swift/urlsession/fixtures/http-insecure.swift +++ b/src/targets/swift/urlsession/fixtures/http-insecure.swift @@ -6,5 +6,5 @@ import Foundation var request = URLRequest(url: URL(string: "http://httpbin.org/anything")!) request.httpMethod = "GET" -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/indent-option.swift b/src/targets/swift/urlsession/fixtures/indent-option.swift index b58e44740..80213179a 100644 --- a/src/targets/swift/urlsession/fixtures/indent-option.swift +++ b/src/targets/swift/urlsession/fixtures/indent-option.swift @@ -6,5 +6,5 @@ import Foundation var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) request.httpMethod = "GET" -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/json-null-value.swift b/src/targets/swift/urlsession/fixtures/json-null-value.swift index 4ba8885f1..ef17dd30c 100644 --- a/src/targets/swift/urlsession/fixtures/json-null-value.swift +++ b/src/targets/swift/urlsession/fixtures/json-null-value.swift @@ -13,5 +13,5 @@ request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift b/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift index 016fff7fd..b636d4676 100644 --- a/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift +++ b/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift @@ -13,5 +13,5 @@ request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift b/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift index 4ba8885f1..ef17dd30c 100644 --- a/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift +++ b/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift @@ -13,5 +13,5 @@ request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/multipart-data.swift b/src/targets/swift/urlsession/fixtures/multipart-data.swift index d858b314f..49c66d5b8 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-data.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-data.swift @@ -44,5 +44,5 @@ request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/multipart-file.swift b/src/targets/swift/urlsession/fixtures/multipart-file.swift index af9bc9f87..60bc9d7c6 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-file.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-file.swift @@ -39,5 +39,5 @@ request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/multipart-form-data-no-params.swift b/src/targets/swift/urlsession/fixtures/multipart-form-data-no-params.swift index 9ff1fa7bc..2465bc50a 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-form-data-no-params.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-form-data-no-params.swift @@ -9,5 +9,5 @@ var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) request.httpMethod = "POST" request.allHTTPHeaderFields = headers -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/multipart-form-data.swift b/src/targets/swift/urlsession/fixtures/multipart-form-data.swift index 3b11e3895..cd3deb237 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-form-data.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-form-data.swift @@ -38,5 +38,5 @@ request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/nested.swift b/src/targets/swift/urlsession/fixtures/nested.swift index 56330a19e..ddae73b1c 100644 --- a/src/targets/swift/urlsession/fixtures/nested.swift +++ b/src/targets/swift/urlsession/fixtures/nested.swift @@ -6,5 +6,5 @@ import Foundation var request = URLRequest(url: URL(string: "https://httpbin.org/anything?foo%5Bbar%5D=baz%2Czap&fiz=buz&key=value")!) request.httpMethod = "GET" -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/postdata-malformed.swift b/src/targets/swift/urlsession/fixtures/postdata-malformed.swift index 71b4f4a9b..6ae30ce9f 100644 --- a/src/targets/swift/urlsession/fixtures/postdata-malformed.swift +++ b/src/targets/swift/urlsession/fixtures/postdata-malformed.swift @@ -9,5 +9,5 @@ var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) request.httpMethod = "POST" request.allHTTPHeaderFields = headers -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/pretty-option.swift b/src/targets/swift/urlsession/fixtures/pretty-option.swift index 3dcf9c52b..f19b65fb2 100644 --- a/src/targets/swift/urlsession/fixtures/pretty-option.swift +++ b/src/targets/swift/urlsession/fixtures/pretty-option.swift @@ -12,5 +12,5 @@ request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/query-encoded.swift b/src/targets/swift/urlsession/fixtures/query-encoded.swift index d57bd20da..ee396dd17 100644 --- a/src/targets/swift/urlsession/fixtures/query-encoded.swift +++ b/src/targets/swift/urlsession/fixtures/query-encoded.swift @@ -6,5 +6,5 @@ import Foundation var request = URLRequest(url: URL(string: "https://httpbin.org/anything?startTime=2019-06-13T19%3A08%3A25.455Z&endTime=2015-09-15T14%3A00%3A12-04%3A00")!) request.httpMethod = "GET" -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/query.swift b/src/targets/swift/urlsession/fixtures/query.swift index a8a0b801e..399d924ab 100644 --- a/src/targets/swift/urlsession/fixtures/query.swift +++ b/src/targets/swift/urlsession/fixtures/query.swift @@ -6,5 +6,5 @@ import Foundation var request = URLRequest(url: URL(string: "https://httpbin.org/anything?foo=bar&foo=baz&baz=abc&key=value")!) request.httpMethod = "GET" -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/short.swift b/src/targets/swift/urlsession/fixtures/short.swift index b58e44740..80213179a 100644 --- a/src/targets/swift/urlsession/fixtures/short.swift +++ b/src/targets/swift/urlsession/fixtures/short.swift @@ -6,5 +6,5 @@ import Foundation var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) request.httpMethod = "GET" -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/text-plain.swift b/src/targets/swift/urlsession/fixtures/text-plain.swift index 0c6b04874..ce9dbd027 100644 --- a/src/targets/swift/urlsession/fixtures/text-plain.swift +++ b/src/targets/swift/urlsession/fixtures/text-plain.swift @@ -12,5 +12,5 @@ request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) diff --git a/src/targets/swift/urlsession/fixtures/timeout-option.swift b/src/targets/swift/urlsession/fixtures/timeout-option.swift index b58e44740..80213179a 100644 --- a/src/targets/swift/urlsession/fixtures/timeout-option.swift +++ b/src/targets/swift/urlsession/fixtures/timeout-option.swift @@ -6,5 +6,5 @@ import Foundation var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) request.httpMethod = "GET" -let (data, response) = try await URLSession.shared.data(with: request) +let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) From e1545425d23b05f17211e2fd3c6e636eccfd2eda Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Thu, 11 Apr 2024 23:10:57 +0900 Subject: [PATCH 2/6] add queryObj logic --- src/targets/swift/urlsession/client.ts | 31 ++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/targets/swift/urlsession/client.ts b/src/targets/swift/urlsession/client.ts index b3f195674..a8f7241a3 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -25,7 +25,7 @@ export const urlsession: Client = { description: "Foundation's URLSession request", extname: '.swift', }, - convert: ({ allHeaders, postData, fullUrl, method }, options) => { + convert: ({ allHeaders, postData, uriObj, queryObj, method }, options) => { const opts = { indent: ' ', pretty: true, @@ -122,7 +122,34 @@ export const urlsession: Client = { blank(); - push(`var request = URLRequest(url: URL(string: "${fullUrl}")!)`); + const queries = queryObj ? Object.entries(queryObj) : []; + if (queries.length < 1) { + push(`var request = URLRequest(url: URL(string: "${uriObj.href}")!)`); + } else { + push(`var components = URLComponents(url: URL(string: "${uriObj.href}")!, resolvingAgainstBaseURL: true)!`); + push('let queryItems: [URLQueryItem] = ['); + + queries.forEach(query => { + const key = query[0].toString(); + const value = query[1]; + switch (Object.prototype.toString.call(value)) { + case '[object String]': + push(` URLQueryItem(name: "${key}", value: "${value}"),`); + break; + case '[object Array]': + value.forEach(val => { + push(` URLQueryItem(name: "${key}", value: "${val}"),`); + }); + break; + } + }); + push(']'); + push('components.queryItems = components.queryItems.map { $0 + queryItems } ?? queryItems'); + + blank(); + push('var request = URLRequest(url: components.url!)'); + } + push(`request.httpMethod = "${method}"`); if (req.hasHeaders) { From 8b22451417409f6dd66a10532a86eabc8c309841 Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Thu, 11 Apr 2024 23:11:01 +0900 Subject: [PATCH 3/6] fix test --- src/targets/swift/urlsession/fixtures/full.swift | 11 ++++++++++- src/targets/swift/urlsession/fixtures/nested.swift | 10 +++++++++- .../swift/urlsession/fixtures/pretty-option.swift | 11 ++++++++++- .../swift/urlsession/fixtures/query-encoded.swift | 9 ++++++++- src/targets/swift/urlsession/fixtures/query.swift | 11 ++++++++++- 5 files changed, 47 insertions(+), 5 deletions(-) diff --git a/src/targets/swift/urlsession/fixtures/full.swift b/src/targets/swift/urlsession/fixtures/full.swift index 2c3b03003..27e36a0fa 100644 --- a/src/targets/swift/urlsession/fixtures/full.swift +++ b/src/targets/swift/urlsession/fixtures/full.swift @@ -11,7 +11,16 @@ let headers = [ let postData = Data("foo=bar".utf8) -var request = URLRequest(url: URL(string: "https://httpbin.org/anything?foo=bar&foo=baz&baz=abc&key=value")!) +var components = URLComponents(url: URL(string: "https://httpbin.org/anything?key=value")!, resolvingAgainstBaseURL: true)! +let queryItems: [URLQueryItem] = [ + URLQueryItem(name: "foo", value: "bar"), + URLQueryItem(name: "foo", value: "baz"), + URLQueryItem(name: "baz", value: "abc"), + URLQueryItem(name: "key", value: "value"), +] +components.queryItems = components.queryItems.map { $0 + queryItems } ?? queryItems + +var request = URLRequest(url: components.url!) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData diff --git a/src/targets/swift/urlsession/fixtures/nested.swift b/src/targets/swift/urlsession/fixtures/nested.swift index ddae73b1c..89e29cf53 100644 --- a/src/targets/swift/urlsession/fixtures/nested.swift +++ b/src/targets/swift/urlsession/fixtures/nested.swift @@ -3,7 +3,15 @@ import Foundation import FoundationNetworking #endif -var request = URLRequest(url: URL(string: "https://httpbin.org/anything?foo%5Bbar%5D=baz%2Czap&fiz=buz&key=value")!) +var components = URLComponents(url: URL(string: "https://httpbin.org/anything")!, resolvingAgainstBaseURL: true)! +let queryItems: [URLQueryItem] = [ + URLQueryItem(name: "foo[bar]", value: "baz,zap"), + URLQueryItem(name: "fiz", value: "buz"), + URLQueryItem(name: "key", value: "value"), +] +components.queryItems = components.queryItems.map { $0 + queryItems } ?? queryItems + +var request = URLRequest(url: components.url!) request.httpMethod = "GET" let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/pretty-option.swift b/src/targets/swift/urlsession/fixtures/pretty-option.swift index f19b65fb2..e3fcd7a56 100644 --- a/src/targets/swift/urlsession/fixtures/pretty-option.swift +++ b/src/targets/swift/urlsession/fixtures/pretty-option.swift @@ -7,7 +7,16 @@ let headers = ["cookie": "foo=bar; bar=baz", "accept": "application/json", "cont let postData = Data("foo=bar".utf8) -var request = URLRequest(url: URL(string: "https://httpbin.org/anything?foo=bar&foo=baz&baz=abc&key=value")!) +var components = URLComponents(url: URL(string: "https://httpbin.org/anything?key=value")!, resolvingAgainstBaseURL: true)! +let queryItems: [URLQueryItem] = [ + URLQueryItem(name: "foo", value: "bar"), + URLQueryItem(name: "foo", value: "baz"), + URLQueryItem(name: "baz", value: "abc"), + URLQueryItem(name: "key", value: "value"), +] +components.queryItems = components.queryItems.map { $0 + queryItems } ?? queryItems + +var request = URLRequest(url: components.url!) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData diff --git a/src/targets/swift/urlsession/fixtures/query-encoded.swift b/src/targets/swift/urlsession/fixtures/query-encoded.swift index ee396dd17..d36191b73 100644 --- a/src/targets/swift/urlsession/fixtures/query-encoded.swift +++ b/src/targets/swift/urlsession/fixtures/query-encoded.swift @@ -3,7 +3,14 @@ import Foundation import FoundationNetworking #endif -var request = URLRequest(url: URL(string: "https://httpbin.org/anything?startTime=2019-06-13T19%3A08%3A25.455Z&endTime=2015-09-15T14%3A00%3A12-04%3A00")!) +var components = URLComponents(url: URL(string: "https://httpbin.org/anything")!, resolvingAgainstBaseURL: true)! +let queryItems: [URLQueryItem] = [ + URLQueryItem(name: "startTime", value: "2019-06-13T19%3A08%3A25.455Z"), + URLQueryItem(name: "endTime", value: "2015-09-15T14%3A00%3A12-04%3A00"), +] +components.queryItems = components.queryItems.map { $0 + queryItems } ?? queryItems + +var request = URLRequest(url: components.url!) request.httpMethod = "GET" let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/query.swift b/src/targets/swift/urlsession/fixtures/query.swift index 399d924ab..190ea572a 100644 --- a/src/targets/swift/urlsession/fixtures/query.swift +++ b/src/targets/swift/urlsession/fixtures/query.swift @@ -3,7 +3,16 @@ import Foundation import FoundationNetworking #endif -var request = URLRequest(url: URL(string: "https://httpbin.org/anything?foo=bar&foo=baz&baz=abc&key=value")!) +var components = URLComponents(url: URL(string: "https://httpbin.org/anything?key=value")!, resolvingAgainstBaseURL: true)! +let queryItems: [URLQueryItem] = [ + URLQueryItem(name: "foo", value: "bar"), + URLQueryItem(name: "foo", value: "baz"), + URLQueryItem(name: "baz", value: "abc"), + URLQueryItem(name: "key", value: "value"), +] +components.queryItems = components.queryItems.map { $0 + queryItems } ?? queryItems + +var request = URLRequest(url: components.url!) request.httpMethod = "GET" let (data, response) = try await URLSession.shared.data(for: request) From 7a8f4d3dd77e15eb0cdb723c74b01c51db12f5e8 Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Thu, 11 Apr 2024 23:28:34 +0900 Subject: [PATCH 4/6] fix declaration location url --- src/targets/swift/urlsession/client.ts | 6 ++++-- .../urlsession/fixtures/application-form-encoded.swift | 3 ++- .../swift/urlsession/fixtures/application-json.swift | 3 ++- src/targets/swift/urlsession/fixtures/cookies.swift | 3 ++- src/targets/swift/urlsession/fixtures/custom-method.swift | 3 ++- src/targets/swift/urlsession/fixtures/full.swift | 3 ++- src/targets/swift/urlsession/fixtures/headers.swift | 3 ++- src/targets/swift/urlsession/fixtures/http-insecure.swift | 3 ++- src/targets/swift/urlsession/fixtures/indent-option.swift | 3 ++- src/targets/swift/urlsession/fixtures/json-null-value.swift | 3 ++- .../swift/urlsession/fixtures/jsonObj-multiline.swift | 3 ++- .../swift/urlsession/fixtures/jsonObj-null-value.swift | 3 ++- src/targets/swift/urlsession/fixtures/multipart-data.swift | 3 ++- src/targets/swift/urlsession/fixtures/multipart-file.swift | 3 ++- .../urlsession/fixtures/multipart-form-data-no-params.swift | 3 ++- .../swift/urlsession/fixtures/multipart-form-data.swift | 3 ++- src/targets/swift/urlsession/fixtures/nested.swift | 3 ++- .../swift/urlsession/fixtures/postdata-malformed.swift | 3 ++- src/targets/swift/urlsession/fixtures/pretty-option.swift | 3 ++- src/targets/swift/urlsession/fixtures/query-encoded.swift | 3 ++- src/targets/swift/urlsession/fixtures/query.swift | 3 ++- src/targets/swift/urlsession/fixtures/short.swift | 3 ++- src/targets/swift/urlsession/fixtures/text-plain.swift | 3 ++- src/targets/swift/urlsession/fixtures/timeout-option.swift | 3 ++- 24 files changed, 50 insertions(+), 25 deletions(-) diff --git a/src/targets/swift/urlsession/client.ts b/src/targets/swift/urlsession/client.ts index a8f7241a3..de9fe2210 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -122,11 +122,13 @@ export const urlsession: Client = { blank(); + push(`let url = URL(string: "${uriObj.href}")!`); + const queries = queryObj ? Object.entries(queryObj) : []; if (queries.length < 1) { - push(`var request = URLRequest(url: URL(string: "${uriObj.href}")!)`); + push('var request = URLRequest(url: url)'); } else { - push(`var components = URLComponents(url: URL(string: "${uriObj.href}")!, resolvingAgainstBaseURL: true)!`); + push('var components = URLComponents(url: url, resolvingAgainstBaseURL: true)!'); push('let queryItems: [URLQueryItem] = ['); queries.forEach(query => { diff --git a/src/targets/swift/urlsession/fixtures/application-form-encoded.swift b/src/targets/swift/urlsession/fixtures/application-form-encoded.swift index 718454988..2e5a5630b 100644 --- a/src/targets/swift/urlsession/fixtures/application-form-encoded.swift +++ b/src/targets/swift/urlsession/fixtures/application-form-encoded.swift @@ -8,7 +8,8 @@ let headers = ["content-type": "application/x-www-form-urlencoded"] var postData = Data("foo=bar".utf8) postData.append(Data("&hello=world".utf8)) -var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) +let url = URL(string: "https://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData diff --git a/src/targets/swift/urlsession/fixtures/application-json.swift b/src/targets/swift/urlsession/fixtures/application-json.swift index 6b9442349..d2c6b3ccb 100644 --- a/src/targets/swift/urlsession/fixtures/application-json.swift +++ b/src/targets/swift/urlsession/fixtures/application-json.swift @@ -15,7 +15,8 @@ let parameters = [ let postData = try JSONSerialization.data(withJSONObject: parameters, options: []) -var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) +let url = URL(string: "https://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData diff --git a/src/targets/swift/urlsession/fixtures/cookies.swift b/src/targets/swift/urlsession/fixtures/cookies.swift index 86b7798d8..dd0f7cdb2 100644 --- a/src/targets/swift/urlsession/fixtures/cookies.swift +++ b/src/targets/swift/urlsession/fixtures/cookies.swift @@ -5,7 +5,8 @@ import Foundation let headers = ["cookie": "foo=bar; bar=baz"] -var request = URLRequest(url: URL(string: "https://httpbin.org/cookies")!) +let url = URL(string: "https://httpbin.org/cookies")! +var request = URLRequest(url: url) request.httpMethod = "GET" request.allHTTPHeaderFields = headers diff --git a/src/targets/swift/urlsession/fixtures/custom-method.swift b/src/targets/swift/urlsession/fixtures/custom-method.swift index e3cbfb024..40b4a86f0 100644 --- a/src/targets/swift/urlsession/fixtures/custom-method.swift +++ b/src/targets/swift/urlsession/fixtures/custom-method.swift @@ -3,7 +3,8 @@ import Foundation import FoundationNetworking #endif -var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) +let url = URL(string: "https://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "PROPFIND" let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/full.swift b/src/targets/swift/urlsession/fixtures/full.swift index 27e36a0fa..7df94abda 100644 --- a/src/targets/swift/urlsession/fixtures/full.swift +++ b/src/targets/swift/urlsession/fixtures/full.swift @@ -11,7 +11,8 @@ let headers = [ let postData = Data("foo=bar".utf8) -var components = URLComponents(url: URL(string: "https://httpbin.org/anything?key=value")!, resolvingAgainstBaseURL: true)! +let url = URL(string: "https://httpbin.org/anything?key=value")! +var components = URLComponents(url: url, resolvingAgainstBaseURL: true)! let queryItems: [URLQueryItem] = [ URLQueryItem(name: "foo", value: "bar"), URLQueryItem(name: "foo", value: "baz"), diff --git a/src/targets/swift/urlsession/fixtures/headers.swift b/src/targets/swift/urlsession/fixtures/headers.swift index a69cac36a..da999ee4a 100644 --- a/src/targets/swift/urlsession/fixtures/headers.swift +++ b/src/targets/swift/urlsession/fixtures/headers.swift @@ -10,7 +10,8 @@ let headers = [ "quoted-value": "\"quoted\" 'string'" ] -var request = URLRequest(url: URL(string: "https://httpbin.org/headers")!) +let url = URL(string: "https://httpbin.org/headers")! +var request = URLRequest(url: url) request.httpMethod = "GET" request.allHTTPHeaderFields = headers diff --git a/src/targets/swift/urlsession/fixtures/http-insecure.swift b/src/targets/swift/urlsession/fixtures/http-insecure.swift index 972b3d4bd..e48266733 100644 --- a/src/targets/swift/urlsession/fixtures/http-insecure.swift +++ b/src/targets/swift/urlsession/fixtures/http-insecure.swift @@ -3,7 +3,8 @@ import Foundation import FoundationNetworking #endif -var request = URLRequest(url: URL(string: "http://httpbin.org/anything")!) +let url = URL(string: "http://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "GET" let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/indent-option.swift b/src/targets/swift/urlsession/fixtures/indent-option.swift index 80213179a..d7ae52740 100644 --- a/src/targets/swift/urlsession/fixtures/indent-option.swift +++ b/src/targets/swift/urlsession/fixtures/indent-option.swift @@ -3,7 +3,8 @@ import Foundation import FoundationNetworking #endif -var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) +let url = URL(string: "https://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "GET" let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/json-null-value.swift b/src/targets/swift/urlsession/fixtures/json-null-value.swift index ef17dd30c..caac59fed 100644 --- a/src/targets/swift/urlsession/fixtures/json-null-value.swift +++ b/src/targets/swift/urlsession/fixtures/json-null-value.swift @@ -8,7 +8,8 @@ let parameters = ["foo": nil] as [String : Any] let postData = try JSONSerialization.data(withJSONObject: parameters, options: []) -var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) +let url = URL(string: "https://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData diff --git a/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift b/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift index b636d4676..ed53b1ef9 100644 --- a/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift +++ b/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift @@ -8,7 +8,8 @@ let parameters = ["foo": "bar"] as [String : Any] let postData = try JSONSerialization.data(withJSONObject: parameters, options: []) -var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) +let url = URL(string: "https://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData diff --git a/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift b/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift index ef17dd30c..caac59fed 100644 --- a/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift +++ b/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift @@ -8,7 +8,8 @@ let parameters = ["foo": nil] as [String : Any] let postData = try JSONSerialization.data(withJSONObject: parameters, options: []) -var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) +let url = URL(string: "https://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData diff --git a/src/targets/swift/urlsession/fixtures/multipart-data.swift b/src/targets/swift/urlsession/fixtures/multipart-data.swift index 49c66d5b8..529bf7998 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-data.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-data.swift @@ -39,7 +39,8 @@ for param in parameters { } } -var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) +let url = URL(string: "https://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData diff --git a/src/targets/swift/urlsession/fixtures/multipart-file.swift b/src/targets/swift/urlsession/fixtures/multipart-file.swift index 60bc9d7c6..ba9c867d3 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-file.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-file.swift @@ -34,7 +34,8 @@ for param in parameters { } } -var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) +let url = URL(string: "https://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData diff --git a/src/targets/swift/urlsession/fixtures/multipart-form-data-no-params.swift b/src/targets/swift/urlsession/fixtures/multipart-form-data-no-params.swift index 2465bc50a..eb2276acb 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-form-data-no-params.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-form-data-no-params.swift @@ -5,7 +5,8 @@ import Foundation let headers = ["Content-Type": "multipart/form-data"] -var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) +let url = URL(string: "https://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "POST" request.allHTTPHeaderFields = headers diff --git a/src/targets/swift/urlsession/fixtures/multipart-form-data.swift b/src/targets/swift/urlsession/fixtures/multipart-form-data.swift index cd3deb237..e9d349eb7 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-form-data.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-form-data.swift @@ -33,7 +33,8 @@ for param in parameters { } } -var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) +let url = URL(string: "https://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData diff --git a/src/targets/swift/urlsession/fixtures/nested.swift b/src/targets/swift/urlsession/fixtures/nested.swift index 89e29cf53..a67a057bd 100644 --- a/src/targets/swift/urlsession/fixtures/nested.swift +++ b/src/targets/swift/urlsession/fixtures/nested.swift @@ -3,7 +3,8 @@ import Foundation import FoundationNetworking #endif -var components = URLComponents(url: URL(string: "https://httpbin.org/anything")!, resolvingAgainstBaseURL: true)! +let url = URL(string: "https://httpbin.org/anything")! +var components = URLComponents(url: url, resolvingAgainstBaseURL: true)! let queryItems: [URLQueryItem] = [ URLQueryItem(name: "foo[bar]", value: "baz,zap"), URLQueryItem(name: "fiz", value: "buz"), diff --git a/src/targets/swift/urlsession/fixtures/postdata-malformed.swift b/src/targets/swift/urlsession/fixtures/postdata-malformed.swift index 6ae30ce9f..29df4fd87 100644 --- a/src/targets/swift/urlsession/fixtures/postdata-malformed.swift +++ b/src/targets/swift/urlsession/fixtures/postdata-malformed.swift @@ -5,7 +5,8 @@ import Foundation let headers = ["content-type": "application/json"] -var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) +let url = URL(string: "https://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "POST" request.allHTTPHeaderFields = headers diff --git a/src/targets/swift/urlsession/fixtures/pretty-option.swift b/src/targets/swift/urlsession/fixtures/pretty-option.swift index e3fcd7a56..3da5fca59 100644 --- a/src/targets/swift/urlsession/fixtures/pretty-option.swift +++ b/src/targets/swift/urlsession/fixtures/pretty-option.swift @@ -7,7 +7,8 @@ let headers = ["cookie": "foo=bar; bar=baz", "accept": "application/json", "cont let postData = Data("foo=bar".utf8) -var components = URLComponents(url: URL(string: "https://httpbin.org/anything?key=value")!, resolvingAgainstBaseURL: true)! +let url = URL(string: "https://httpbin.org/anything?key=value")! +var components = URLComponents(url: url, resolvingAgainstBaseURL: true)! let queryItems: [URLQueryItem] = [ URLQueryItem(name: "foo", value: "bar"), URLQueryItem(name: "foo", value: "baz"), diff --git a/src/targets/swift/urlsession/fixtures/query-encoded.swift b/src/targets/swift/urlsession/fixtures/query-encoded.swift index d36191b73..a264a7d2f 100644 --- a/src/targets/swift/urlsession/fixtures/query-encoded.swift +++ b/src/targets/swift/urlsession/fixtures/query-encoded.swift @@ -3,7 +3,8 @@ import Foundation import FoundationNetworking #endif -var components = URLComponents(url: URL(string: "https://httpbin.org/anything")!, resolvingAgainstBaseURL: true)! +let url = URL(string: "https://httpbin.org/anything")! +var components = URLComponents(url: url, resolvingAgainstBaseURL: true)! let queryItems: [URLQueryItem] = [ URLQueryItem(name: "startTime", value: "2019-06-13T19%3A08%3A25.455Z"), URLQueryItem(name: "endTime", value: "2015-09-15T14%3A00%3A12-04%3A00"), diff --git a/src/targets/swift/urlsession/fixtures/query.swift b/src/targets/swift/urlsession/fixtures/query.swift index 190ea572a..8e5f34f2d 100644 --- a/src/targets/swift/urlsession/fixtures/query.swift +++ b/src/targets/swift/urlsession/fixtures/query.swift @@ -3,7 +3,8 @@ import Foundation import FoundationNetworking #endif -var components = URLComponents(url: URL(string: "https://httpbin.org/anything?key=value")!, resolvingAgainstBaseURL: true)! +let url = URL(string: "https://httpbin.org/anything?key=value")! +var components = URLComponents(url: url, resolvingAgainstBaseURL: true)! let queryItems: [URLQueryItem] = [ URLQueryItem(name: "foo", value: "bar"), URLQueryItem(name: "foo", value: "baz"), diff --git a/src/targets/swift/urlsession/fixtures/short.swift b/src/targets/swift/urlsession/fixtures/short.swift index 80213179a..d7ae52740 100644 --- a/src/targets/swift/urlsession/fixtures/short.swift +++ b/src/targets/swift/urlsession/fixtures/short.swift @@ -3,7 +3,8 @@ import Foundation import FoundationNetworking #endif -var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) +let url = URL(string: "https://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "GET" let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/text-plain.swift b/src/targets/swift/urlsession/fixtures/text-plain.swift index ce9dbd027..725832782 100644 --- a/src/targets/swift/urlsession/fixtures/text-plain.swift +++ b/src/targets/swift/urlsession/fixtures/text-plain.swift @@ -7,7 +7,8 @@ let headers = ["content-type": "text/plain"] let postData = Data("Hello World".utf8) -var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) +let url = URL(string: "https://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData diff --git a/src/targets/swift/urlsession/fixtures/timeout-option.swift b/src/targets/swift/urlsession/fixtures/timeout-option.swift index 80213179a..d7ae52740 100644 --- a/src/targets/swift/urlsession/fixtures/timeout-option.swift +++ b/src/targets/swift/urlsession/fixtures/timeout-option.swift @@ -3,7 +3,8 @@ import Foundation import FoundationNetworking #endif -var request = URLRequest(url: URL(string: "https://httpbin.org/anything")!) +let url = URL(string: "https://httpbin.org/anything")! +var request = URLRequest(url: url) request.httpMethod = "GET" let (data, response) = try await URLSession.shared.data(for: request) From 0cb3c1dc055c69770eae0c90561a5eb6d034c07e Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Thu, 11 Apr 2024 23:39:28 +0900 Subject: [PATCH 5/6] remove toString --- src/targets/swift/urlsession/client.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/targets/swift/urlsession/client.ts b/src/targets/swift/urlsession/client.ts index de9fe2210..3aa52c23e 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -132,7 +132,7 @@ export const urlsession: Client = { push('let queryItems: [URLQueryItem] = ['); queries.forEach(query => { - const key = query[0].toString(); + const key = query[0]; const value = query[1]; switch (Object.prototype.toString.call(value)) { case '[object String]': From 0af02c04cfeb5c99fae1d8343d3cda83cf076ee5 Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Thu, 11 Apr 2024 23:45:00 +0900 Subject: [PATCH 6/6] replace indent to opts.indent --- src/targets/swift/urlsession/client.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/targets/swift/urlsession/client.ts b/src/targets/swift/urlsession/client.ts index 3aa52c23e..466f96b82 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -136,11 +136,11 @@ export const urlsession: Client = { const value = query[1]; switch (Object.prototype.toString.call(value)) { case '[object String]': - push(` URLQueryItem(name: "${key}", value: "${value}"),`); + push(`${opts.indent}URLQueryItem(name: "${key}", value: "${value}"),`); break; case '[object Array]': value.forEach(val => { - push(` URLQueryItem(name: "${key}", value: "${val}"),`); + push(`${opts.indent}URLQueryItem(name: "${key}", value: "${val}"),`); }); break; }