From cad0be38ce00f35706687dc845bc1f4499891ac1 Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Sat, 13 Apr 2024 00:49:41 +0900 Subject: [PATCH 01/11] remove final newline --- 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, 23 insertions(+), 25 deletions(-) diff --git a/src/targets/swift/urlsession/client.ts b/src/targets/swift/urlsession/client.ts index 466f96b82..1858a69a9 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -168,8 +168,6 @@ export const urlsession: Client = { push('let (data, response) = try await URLSession.shared.data(for: request)'); push('print(String(decoding: data, as: UTF8.self))'); - blank(); - return join(); }, }; diff --git a/src/targets/swift/urlsession/fixtures/application-form-encoded.swift b/src/targets/swift/urlsession/fixtures/application-form-encoded.swift index 2e5a5630b..f461ef5cd 100644 --- a/src/targets/swift/urlsession/fixtures/application-form-encoded.swift +++ b/src/targets/swift/urlsession/fixtures/application-form-encoded.swift @@ -15,4 +15,4 @@ request.allHTTPHeaderFields = headers request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/application-json.swift b/src/targets/swift/urlsession/fixtures/application-json.swift index d2c6b3ccb..5e22ddb10 100644 --- a/src/targets/swift/urlsession/fixtures/application-json.swift +++ b/src/targets/swift/urlsession/fixtures/application-json.swift @@ -22,4 +22,4 @@ request.allHTTPHeaderFields = headers request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/cookies.swift b/src/targets/swift/urlsession/fixtures/cookies.swift index dd0f7cdb2..dd5936e09 100644 --- a/src/targets/swift/urlsession/fixtures/cookies.swift +++ b/src/targets/swift/urlsession/fixtures/cookies.swift @@ -11,4 +11,4 @@ request.httpMethod = "GET" request.allHTTPHeaderFields = headers let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/custom-method.swift b/src/targets/swift/urlsession/fixtures/custom-method.swift index 40b4a86f0..7d949e9d5 100644 --- a/src/targets/swift/urlsession/fixtures/custom-method.swift +++ b/src/targets/swift/urlsession/fixtures/custom-method.swift @@ -8,4 +8,4 @@ var request = URLRequest(url: url) request.httpMethod = "PROPFIND" let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/full.swift b/src/targets/swift/urlsession/fixtures/full.swift index 7df94abda..7783320ed 100644 --- a/src/targets/swift/urlsession/fixtures/full.swift +++ b/src/targets/swift/urlsession/fixtures/full.swift @@ -27,4 +27,4 @@ request.allHTTPHeaderFields = headers request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/headers.swift b/src/targets/swift/urlsession/fixtures/headers.swift index da999ee4a..9bcb34418 100644 --- a/src/targets/swift/urlsession/fixtures/headers.swift +++ b/src/targets/swift/urlsession/fixtures/headers.swift @@ -16,4 +16,4 @@ request.httpMethod = "GET" request.allHTTPHeaderFields = headers let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/http-insecure.swift b/src/targets/swift/urlsession/fixtures/http-insecure.swift index e48266733..57c28b468 100644 --- a/src/targets/swift/urlsession/fixtures/http-insecure.swift +++ b/src/targets/swift/urlsession/fixtures/http-insecure.swift @@ -8,4 +8,4 @@ var request = URLRequest(url: url) request.httpMethod = "GET" let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/indent-option.swift b/src/targets/swift/urlsession/fixtures/indent-option.swift index d7ae52740..c3612d03c 100644 --- a/src/targets/swift/urlsession/fixtures/indent-option.swift +++ b/src/targets/swift/urlsession/fixtures/indent-option.swift @@ -8,4 +8,4 @@ var request = URLRequest(url: url) request.httpMethod = "GET" let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/json-null-value.swift b/src/targets/swift/urlsession/fixtures/json-null-value.swift index caac59fed..2717a5952 100644 --- a/src/targets/swift/urlsession/fixtures/json-null-value.swift +++ b/src/targets/swift/urlsession/fixtures/json-null-value.swift @@ -15,4 +15,4 @@ request.allHTTPHeaderFields = headers request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift b/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift index ed53b1ef9..f7bc37583 100644 --- a/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift +++ b/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift @@ -15,4 +15,4 @@ request.allHTTPHeaderFields = headers request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift b/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift index caac59fed..2717a5952 100644 --- a/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift +++ b/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift @@ -15,4 +15,4 @@ request.allHTTPHeaderFields = headers request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/multipart-data.swift b/src/targets/swift/urlsession/fixtures/multipart-data.swift index 529bf7998..e62c0b7f3 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-data.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-data.swift @@ -46,4 +46,4 @@ request.allHTTPHeaderFields = headers request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/multipart-file.swift b/src/targets/swift/urlsession/fixtures/multipart-file.swift index ba9c867d3..7a10c85e8 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-file.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-file.swift @@ -41,4 +41,4 @@ request.allHTTPHeaderFields = headers request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file 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 eb2276acb..cf99eccd8 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 @@ -11,4 +11,4 @@ request.httpMethod = "POST" request.allHTTPHeaderFields = headers let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/multipart-form-data.swift b/src/targets/swift/urlsession/fixtures/multipart-form-data.swift index e9d349eb7..5b3aa71a2 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-form-data.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-form-data.swift @@ -40,4 +40,4 @@ request.allHTTPHeaderFields = headers request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/nested.swift b/src/targets/swift/urlsession/fixtures/nested.swift index a67a057bd..5e58c0070 100644 --- a/src/targets/swift/urlsession/fixtures/nested.swift +++ b/src/targets/swift/urlsession/fixtures/nested.swift @@ -16,4 +16,4 @@ var request = URLRequest(url: components.url!) request.httpMethod = "GET" let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/postdata-malformed.swift b/src/targets/swift/urlsession/fixtures/postdata-malformed.swift index 29df4fd87..64a0fdeb6 100644 --- a/src/targets/swift/urlsession/fixtures/postdata-malformed.swift +++ b/src/targets/swift/urlsession/fixtures/postdata-malformed.swift @@ -11,4 +11,4 @@ request.httpMethod = "POST" request.allHTTPHeaderFields = headers let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/pretty-option.swift b/src/targets/swift/urlsession/fixtures/pretty-option.swift index 3da5fca59..3ef43918e 100644 --- a/src/targets/swift/urlsession/fixtures/pretty-option.swift +++ b/src/targets/swift/urlsession/fixtures/pretty-option.swift @@ -23,4 +23,4 @@ request.allHTTPHeaderFields = headers request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/query-encoded.swift b/src/targets/swift/urlsession/fixtures/query-encoded.swift index a264a7d2f..e0a1a0d3e 100644 --- a/src/targets/swift/urlsession/fixtures/query-encoded.swift +++ b/src/targets/swift/urlsession/fixtures/query-encoded.swift @@ -15,4 +15,4 @@ var request = URLRequest(url: components.url!) request.httpMethod = "GET" let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/query.swift b/src/targets/swift/urlsession/fixtures/query.swift index 8e5f34f2d..b9da85fb9 100644 --- a/src/targets/swift/urlsession/fixtures/query.swift +++ b/src/targets/swift/urlsession/fixtures/query.swift @@ -17,4 +17,4 @@ var request = URLRequest(url: components.url!) request.httpMethod = "GET" let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/short.swift b/src/targets/swift/urlsession/fixtures/short.swift index d7ae52740..c3612d03c 100644 --- a/src/targets/swift/urlsession/fixtures/short.swift +++ b/src/targets/swift/urlsession/fixtures/short.swift @@ -8,4 +8,4 @@ var request = URLRequest(url: url) request.httpMethod = "GET" let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/text-plain.swift b/src/targets/swift/urlsession/fixtures/text-plain.swift index 725832782..5073ad452 100644 --- a/src/targets/swift/urlsession/fixtures/text-plain.swift +++ b/src/targets/swift/urlsession/fixtures/text-plain.swift @@ -14,4 +14,4 @@ request.allHTTPHeaderFields = headers request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/timeout-option.swift b/src/targets/swift/urlsession/fixtures/timeout-option.swift index d7ae52740..c3612d03c 100644 --- a/src/targets/swift/urlsession/fixtures/timeout-option.swift +++ b/src/targets/swift/urlsession/fixtures/timeout-option.swift @@ -8,4 +8,4 @@ var request = URLRequest(url: url) request.httpMethod = "GET" let (data, response) = try await URLSession.shared.data(for: request) -print(String(decoding: data, as: UTF8.self)) +print(String(decoding: data, as: UTF8.self)) \ No newline at end of file From cb67a7ebbb45fd68d972081a80e50805a8a4f30f Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Sat, 13 Apr 2024 00:52:39 +0900 Subject: [PATCH 02/11] remove comment --- src/targets/swift/urlsession/client.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/targets/swift/urlsession/client.ts b/src/targets/swift/urlsession/client.ts index 1858a69a9..8696c8653 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -163,7 +163,6 @@ 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(for: request)'); push('print(String(decoding: data, as: UTF8.self))'); From b24faa251d0fca7a0d5dad212fd81935ddb8c6e6 Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Sat, 13 Apr 2024 01:03:31 +0900 Subject: [PATCH 03/11] add `as string[]` for warning --- 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 8696c8653..f92e2d980 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -139,7 +139,7 @@ export const urlsession: Client = { push(`${opts.indent}URLQueryItem(name: "${key}", value: "${value}"),`); break; case '[object Array]': - value.forEach(val => { + (value as string[]).forEach((val: string) => { push(`${opts.indent}URLQueryItem(name: "${key}", value: "${val}"),`); }); break; From f02005223ce2792599fb14a80c56b622f87df7de Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Sat, 13 Apr 2024 01:31:42 +0900 Subject: [PATCH 04/11] support timeout --- src/targets/swift/urlsession/client.ts | 3 ++- .../swift/urlsession/fixtures/application-form-encoded.swift | 1 + src/targets/swift/urlsession/fixtures/application-json.swift | 1 + src/targets/swift/urlsession/fixtures/cookies.swift | 1 + src/targets/swift/urlsession/fixtures/custom-method.swift | 1 + src/targets/swift/urlsession/fixtures/full.swift | 1 + src/targets/swift/urlsession/fixtures/headers.swift | 1 + src/targets/swift/urlsession/fixtures/http-insecure.swift | 1 + src/targets/swift/urlsession/fixtures/indent-option.swift | 1 + src/targets/swift/urlsession/fixtures/json-null-value.swift | 1 + src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift | 1 + src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift | 1 + src/targets/swift/urlsession/fixtures/multipart-data.swift | 1 + src/targets/swift/urlsession/fixtures/multipart-file.swift | 1 + .../urlsession/fixtures/multipart-form-data-no-params.swift | 1 + .../swift/urlsession/fixtures/multipart-form-data.swift | 1 + src/targets/swift/urlsession/fixtures/nested.swift | 1 + src/targets/swift/urlsession/fixtures/postdata-malformed.swift | 1 + src/targets/swift/urlsession/fixtures/pretty-option.swift | 1 + src/targets/swift/urlsession/fixtures/query-encoded.swift | 1 + src/targets/swift/urlsession/fixtures/query.swift | 1 + src/targets/swift/urlsession/fixtures/short.swift | 1 + src/targets/swift/urlsession/fixtures/text-plain.swift | 1 + src/targets/swift/urlsession/fixtures/timeout-option.swift | 1 + 24 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/targets/swift/urlsession/client.ts b/src/targets/swift/urlsession/client.ts index f92e2d980..e262ccd38 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -29,7 +29,7 @@ export const urlsession: Client = { const opts = { indent: ' ', pretty: true, - timeout: '10', + timeout: 10, ...options, }; @@ -153,6 +153,7 @@ export const urlsession: Client = { } push(`request.httpMethod = "${method}"`); + push(`request.timeoutInterval = ${opts.timeout}`); if (req.hasHeaders) { push('request.allHTTPHeaderFields = headers'); diff --git a/src/targets/swift/urlsession/fixtures/application-form-encoded.swift b/src/targets/swift/urlsession/fixtures/application-form-encoded.swift index f461ef5cd..c1c023a0f 100644 --- a/src/targets/swift/urlsession/fixtures/application-form-encoded.swift +++ b/src/targets/swift/urlsession/fixtures/application-form-encoded.swift @@ -11,6 +11,7 @@ postData.append(Data("&hello=world".utf8)) let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" +request.timeoutInterval = 10 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 5e22ddb10..96a81626f 100644 --- a/src/targets/swift/urlsession/fixtures/application-json.swift +++ b/src/targets/swift/urlsession/fixtures/application-json.swift @@ -18,6 +18,7 @@ let postData = try JSONSerialization.data(withJSONObject: parameters, options: [ let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" +request.timeoutInterval = 10 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 dd5936e09..fb3d6edc3 100644 --- a/src/targets/swift/urlsession/fixtures/cookies.swift +++ b/src/targets/swift/urlsession/fixtures/cookies.swift @@ -8,6 +8,7 @@ let headers = ["cookie": "foo=bar; bar=baz"] let url = URL(string: "https://httpbin.org/cookies")! var request = URLRequest(url: url) request.httpMethod = "GET" +request.timeoutInterval = 10 request.allHTTPHeaderFields = headers let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/custom-method.swift b/src/targets/swift/urlsession/fixtures/custom-method.swift index 7d949e9d5..5e6ad8c09 100644 --- a/src/targets/swift/urlsession/fixtures/custom-method.swift +++ b/src/targets/swift/urlsession/fixtures/custom-method.swift @@ -6,6 +6,7 @@ import Foundation let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "PROPFIND" +request.timeoutInterval = 10 let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/full.swift b/src/targets/swift/urlsession/fixtures/full.swift index 7783320ed..1be6ac941 100644 --- a/src/targets/swift/urlsession/fixtures/full.swift +++ b/src/targets/swift/urlsession/fixtures/full.swift @@ -23,6 +23,7 @@ components.queryItems = components.queryItems.map { $0 + queryItems } ?? queryIt var request = URLRequest(url: components.url!) request.httpMethod = "POST" +request.timeoutInterval = 10 request.allHTTPHeaderFields = headers request.httpBody = postData diff --git a/src/targets/swift/urlsession/fixtures/headers.swift b/src/targets/swift/urlsession/fixtures/headers.swift index 9bcb34418..60c746ed7 100644 --- a/src/targets/swift/urlsession/fixtures/headers.swift +++ b/src/targets/swift/urlsession/fixtures/headers.swift @@ -13,6 +13,7 @@ let headers = [ let url = URL(string: "https://httpbin.org/headers")! var request = URLRequest(url: url) request.httpMethod = "GET" +request.timeoutInterval = 10 request.allHTTPHeaderFields = headers let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/http-insecure.swift b/src/targets/swift/urlsession/fixtures/http-insecure.swift index 57c28b468..ae926b525 100644 --- a/src/targets/swift/urlsession/fixtures/http-insecure.swift +++ b/src/targets/swift/urlsession/fixtures/http-insecure.swift @@ -6,6 +6,7 @@ import Foundation let url = URL(string: "http://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "GET" +request.timeoutInterval = 10 let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/indent-option.swift b/src/targets/swift/urlsession/fixtures/indent-option.swift index c3612d03c..06eb0b9f4 100644 --- a/src/targets/swift/urlsession/fixtures/indent-option.swift +++ b/src/targets/swift/urlsession/fixtures/indent-option.swift @@ -6,6 +6,7 @@ import Foundation let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "GET" +request.timeoutInterval = 10 let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/json-null-value.swift b/src/targets/swift/urlsession/fixtures/json-null-value.swift index 2717a5952..0b35abeae 100644 --- a/src/targets/swift/urlsession/fixtures/json-null-value.swift +++ b/src/targets/swift/urlsession/fixtures/json-null-value.swift @@ -11,6 +11,7 @@ let postData = try JSONSerialization.data(withJSONObject: parameters, options: [ let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" +request.timeoutInterval = 10 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 f7bc37583..f3cfbf7bf 100644 --- a/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift +++ b/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift @@ -11,6 +11,7 @@ let postData = try JSONSerialization.data(withJSONObject: parameters, options: [ let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" +request.timeoutInterval = 10 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 2717a5952..0b35abeae 100644 --- a/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift +++ b/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift @@ -11,6 +11,7 @@ let postData = try JSONSerialization.data(withJSONObject: parameters, options: [ let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" +request.timeoutInterval = 10 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 e62c0b7f3..1d2d9d241 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-data.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-data.swift @@ -42,6 +42,7 @@ for param in parameters { let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" +request.timeoutInterval = 10 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 7a10c85e8..79756c239 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-file.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-file.swift @@ -37,6 +37,7 @@ for param in parameters { let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" +request.timeoutInterval = 10 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 cf99eccd8..84b923065 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 @@ -8,6 +8,7 @@ let headers = ["Content-Type": "multipart/form-data"] let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" +request.timeoutInterval = 10 request.allHTTPHeaderFields = headers let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/multipart-form-data.swift b/src/targets/swift/urlsession/fixtures/multipart-form-data.swift index 5b3aa71a2..745c518c1 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-form-data.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-form-data.swift @@ -36,6 +36,7 @@ for param in parameters { let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" +request.timeoutInterval = 10 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 5e58c0070..7ea752179 100644 --- a/src/targets/swift/urlsession/fixtures/nested.swift +++ b/src/targets/swift/urlsession/fixtures/nested.swift @@ -14,6 +14,7 @@ components.queryItems = components.queryItems.map { $0 + queryItems } ?? queryIt var request = URLRequest(url: components.url!) request.httpMethod = "GET" +request.timeoutInterval = 10 let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/postdata-malformed.swift b/src/targets/swift/urlsession/fixtures/postdata-malformed.swift index 64a0fdeb6..2dae74245 100644 --- a/src/targets/swift/urlsession/fixtures/postdata-malformed.swift +++ b/src/targets/swift/urlsession/fixtures/postdata-malformed.swift @@ -8,6 +8,7 @@ let headers = ["content-type": "application/json"] let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" +request.timeoutInterval = 10 request.allHTTPHeaderFields = headers 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 3ef43918e..d5448099f 100644 --- a/src/targets/swift/urlsession/fixtures/pretty-option.swift +++ b/src/targets/swift/urlsession/fixtures/pretty-option.swift @@ -19,6 +19,7 @@ components.queryItems = components.queryItems.map { $0 + queryItems } ?? queryIt var request = URLRequest(url: components.url!) request.httpMethod = "POST" +request.timeoutInterval = 10 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 e0a1a0d3e..a65acd77e 100644 --- a/src/targets/swift/urlsession/fixtures/query-encoded.swift +++ b/src/targets/swift/urlsession/fixtures/query-encoded.swift @@ -13,6 +13,7 @@ components.queryItems = components.queryItems.map { $0 + queryItems } ?? queryIt var request = URLRequest(url: components.url!) request.httpMethod = "GET" +request.timeoutInterval = 10 let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/query.swift b/src/targets/swift/urlsession/fixtures/query.swift index b9da85fb9..29981eeae 100644 --- a/src/targets/swift/urlsession/fixtures/query.swift +++ b/src/targets/swift/urlsession/fixtures/query.swift @@ -15,6 +15,7 @@ components.queryItems = components.queryItems.map { $0 + queryItems } ?? queryIt var request = URLRequest(url: components.url!) request.httpMethod = "GET" +request.timeoutInterval = 10 let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/short.swift b/src/targets/swift/urlsession/fixtures/short.swift index c3612d03c..06eb0b9f4 100644 --- a/src/targets/swift/urlsession/fixtures/short.swift +++ b/src/targets/swift/urlsession/fixtures/short.swift @@ -6,6 +6,7 @@ import Foundation let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "GET" +request.timeoutInterval = 10 let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/text-plain.swift b/src/targets/swift/urlsession/fixtures/text-plain.swift index 5073ad452..77d9e0468 100644 --- a/src/targets/swift/urlsession/fixtures/text-plain.swift +++ b/src/targets/swift/urlsession/fixtures/text-plain.swift @@ -10,6 +10,7 @@ let postData = Data("Hello World".utf8) let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" +request.timeoutInterval = 10 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 c3612d03c..5b9526b7e 100644 --- a/src/targets/swift/urlsession/fixtures/timeout-option.swift +++ b/src/targets/swift/urlsession/fixtures/timeout-option.swift @@ -6,6 +6,7 @@ import Foundation let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "GET" +request.timeoutInterval = 5 let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) \ No newline at end of file From 76f8d715457d5389b765095df811f9b25a57b95c Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Sat, 13 Apr 2024 01:32:05 +0900 Subject: [PATCH 05/11] remove `const req ` --- src/targets/swift/urlsession/client.ts | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/src/targets/swift/urlsession/client.ts b/src/targets/swift/urlsession/client.ts index e262ccd38..bce922fea 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -35,27 +35,21 @@ export const urlsession: Client = { const { push, blank, join } = new CodeBuilder({ indent: opts.indent }); - // Markers for headers to be created as litteral objects and later be set on the URLRequest if exist - const req = { - hasHeaders: false, - hasBody: false, - }; - // We just want to make sure people understand that is the only dependency push('import Foundation'); push('#if canImport(FoundationNetworking)'); push(' import FoundationNetworking'); push('#endif'); - if (Object.keys(allHeaders).length) { - req.hasHeaders = true; + const hasHeaders = Object.keys(allHeaders).length > 0; + + if (hasHeaders) { blank(); push(literalDeclaration('headers', allHeaders, opts)); } - if (postData.text || postData.jsonObj || postData.params) { - req.hasBody = true; - + const hasBody = postData.text || postData.jsonObj || postData.params; + if (hasBody) { switch (postData.mimeType) { case 'application/x-www-form-urlencoded': // By appending parameters one by one in the resulting snippet, @@ -68,8 +62,6 @@ export const urlsession: Client = { tail.forEach(({ name, value }) => { push(`postData.append(Data("&${name}=${value}".utf8))`); }); - } else { - req.hasBody = false; } break; @@ -155,11 +147,11 @@ export const urlsession: Client = { push(`request.httpMethod = "${method}"`); push(`request.timeoutInterval = ${opts.timeout}`); - if (req.hasHeaders) { + if (hasHeaders) { push('request.allHTTPHeaderFields = headers'); } - if (req.hasBody) { + if (hasBody) { push('request.httpBody = postData'); } From 959bc8312325abc33e759c2cc82b833a863a4880 Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Sat, 13 Apr 2024 01:34:55 +0900 Subject: [PATCH 06/11] remove FoundationNetworking --- src/targets/swift/urlsession/client.ts | 3 --- .../swift/urlsession/fixtures/application-form-encoded.swift | 3 --- src/targets/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 --- src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift | 3 --- src/targets/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 --- src/targets/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, 72 deletions(-) diff --git a/src/targets/swift/urlsession/client.ts b/src/targets/swift/urlsession/client.ts index bce922fea..eda6de0c5 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -37,9 +37,6 @@ export const urlsession: Client = { // We just want to make sure people understand that is the only dependency push('import Foundation'); - push('#if canImport(FoundationNetworking)'); - push(' import FoundationNetworking'); - push('#endif'); const hasHeaders = Object.keys(allHeaders).length > 0; diff --git a/src/targets/swift/urlsession/fixtures/application-form-encoded.swift b/src/targets/swift/urlsession/fixtures/application-form-encoded.swift index c1c023a0f..f2fe4d89a 100644 --- a/src/targets/swift/urlsession/fixtures/application-form-encoded.swift +++ b/src/targets/swift/urlsession/fixtures/application-form-encoded.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let headers = ["content-type": "application/x-www-form-urlencoded"] diff --git a/src/targets/swift/urlsession/fixtures/application-json.swift b/src/targets/swift/urlsession/fixtures/application-json.swift index 96a81626f..1f89adcbb 100644 --- a/src/targets/swift/urlsession/fixtures/application-json.swift +++ b/src/targets/swift/urlsession/fixtures/application-json.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let headers = ["content-type": "application/json"] let parameters = [ diff --git a/src/targets/swift/urlsession/fixtures/cookies.swift b/src/targets/swift/urlsession/fixtures/cookies.swift index fb3d6edc3..8a726c362 100644 --- a/src/targets/swift/urlsession/fixtures/cookies.swift +++ b/src/targets/swift/urlsession/fixtures/cookies.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let headers = ["cookie": "foo=bar; bar=baz"] diff --git a/src/targets/swift/urlsession/fixtures/custom-method.swift b/src/targets/swift/urlsession/fixtures/custom-method.swift index 5e6ad8c09..ca11226f2 100644 --- a/src/targets/swift/urlsession/fixtures/custom-method.swift +++ b/src/targets/swift/urlsession/fixtures/custom-method.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) diff --git a/src/targets/swift/urlsession/fixtures/full.swift b/src/targets/swift/urlsession/fixtures/full.swift index 1be6ac941..312434ca0 100644 --- a/src/targets/swift/urlsession/fixtures/full.swift +++ b/src/targets/swift/urlsession/fixtures/full.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let headers = [ "cookie": "foo=bar; bar=baz", diff --git a/src/targets/swift/urlsession/fixtures/headers.swift b/src/targets/swift/urlsession/fixtures/headers.swift index 60c746ed7..b86241d74 100644 --- a/src/targets/swift/urlsession/fixtures/headers.swift +++ b/src/targets/swift/urlsession/fixtures/headers.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let headers = [ "accept": "application/json", diff --git a/src/targets/swift/urlsession/fixtures/http-insecure.swift b/src/targets/swift/urlsession/fixtures/http-insecure.swift index ae926b525..35f8cedce 100644 --- a/src/targets/swift/urlsession/fixtures/http-insecure.swift +++ b/src/targets/swift/urlsession/fixtures/http-insecure.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let url = URL(string: "http://httpbin.org/anything")! var request = URLRequest(url: url) diff --git a/src/targets/swift/urlsession/fixtures/indent-option.swift b/src/targets/swift/urlsession/fixtures/indent-option.swift index 06eb0b9f4..57129ea4d 100644 --- a/src/targets/swift/urlsession/fixtures/indent-option.swift +++ b/src/targets/swift/urlsession/fixtures/indent-option.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) diff --git a/src/targets/swift/urlsession/fixtures/json-null-value.swift b/src/targets/swift/urlsession/fixtures/json-null-value.swift index 0b35abeae..8d33be2c2 100644 --- a/src/targets/swift/urlsession/fixtures/json-null-value.swift +++ b/src/targets/swift/urlsession/fixtures/json-null-value.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let headers = ["content-type": "application/json"] let parameters = ["foo": nil] as [String : Any] diff --git a/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift b/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift index f3cfbf7bf..ebbce8995 100644 --- a/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift +++ b/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let headers = ["content-type": "application/json"] let parameters = ["foo": "bar"] as [String : Any] diff --git a/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift b/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift index 0b35abeae..8d33be2c2 100644 --- a/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift +++ b/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let headers = ["content-type": "application/json"] let parameters = ["foo": nil] as [String : Any] diff --git a/src/targets/swift/urlsession/fixtures/multipart-data.swift b/src/targets/swift/urlsession/fixtures/multipart-data.swift index 1d2d9d241..62ba916d9 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-data.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-data.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let headers = ["content-type": "multipart/form-data; boundary=---011000010111000001101001"] let parameters = [ diff --git a/src/targets/swift/urlsession/fixtures/multipart-file.swift b/src/targets/swift/urlsession/fixtures/multipart-file.swift index 79756c239..93df14e48 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-file.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-file.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let headers = ["content-type": "multipart/form-data; boundary=---011000010111000001101001"] let parameters = [ 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 84b923065..6de34c458 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 @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let headers = ["Content-Type": "multipart/form-data"] diff --git a/src/targets/swift/urlsession/fixtures/multipart-form-data.swift b/src/targets/swift/urlsession/fixtures/multipart-form-data.swift index 745c518c1..f55fee625 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-form-data.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-form-data.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let headers = ["Content-Type": "multipart/form-data; boundary=---011000010111000001101001"] let parameters = [ diff --git a/src/targets/swift/urlsession/fixtures/nested.swift b/src/targets/swift/urlsession/fixtures/nested.swift index 7ea752179..f512fef8e 100644 --- a/src/targets/swift/urlsession/fixtures/nested.swift +++ b/src/targets/swift/urlsession/fixtures/nested.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let url = URL(string: "https://httpbin.org/anything")! var components = URLComponents(url: url, resolvingAgainstBaseURL: true)! diff --git a/src/targets/swift/urlsession/fixtures/postdata-malformed.swift b/src/targets/swift/urlsession/fixtures/postdata-malformed.swift index 2dae74245..82b7c8cd6 100644 --- a/src/targets/swift/urlsession/fixtures/postdata-malformed.swift +++ b/src/targets/swift/urlsession/fixtures/postdata-malformed.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let headers = ["content-type": "application/json"] diff --git a/src/targets/swift/urlsession/fixtures/pretty-option.swift b/src/targets/swift/urlsession/fixtures/pretty-option.swift index d5448099f..236ba223b 100644 --- a/src/targets/swift/urlsession/fixtures/pretty-option.swift +++ b/src/targets/swift/urlsession/fixtures/pretty-option.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let headers = ["cookie": "foo=bar; bar=baz", "accept": "application/json", "content-type": "application/x-www-form-urlencoded"] diff --git a/src/targets/swift/urlsession/fixtures/query-encoded.swift b/src/targets/swift/urlsession/fixtures/query-encoded.swift index a65acd77e..dc249497f 100644 --- a/src/targets/swift/urlsession/fixtures/query-encoded.swift +++ b/src/targets/swift/urlsession/fixtures/query-encoded.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let url = URL(string: "https://httpbin.org/anything")! var components = URLComponents(url: url, resolvingAgainstBaseURL: true)! diff --git a/src/targets/swift/urlsession/fixtures/query.swift b/src/targets/swift/urlsession/fixtures/query.swift index 29981eeae..230b7ab0a 100644 --- a/src/targets/swift/urlsession/fixtures/query.swift +++ b/src/targets/swift/urlsession/fixtures/query.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let url = URL(string: "https://httpbin.org/anything?key=value")! var components = URLComponents(url: url, resolvingAgainstBaseURL: true)! diff --git a/src/targets/swift/urlsession/fixtures/short.swift b/src/targets/swift/urlsession/fixtures/short.swift index 06eb0b9f4..57129ea4d 100644 --- a/src/targets/swift/urlsession/fixtures/short.swift +++ b/src/targets/swift/urlsession/fixtures/short.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) diff --git a/src/targets/swift/urlsession/fixtures/text-plain.swift b/src/targets/swift/urlsession/fixtures/text-plain.swift index 77d9e0468..85c6e449d 100644 --- a/src/targets/swift/urlsession/fixtures/text-plain.swift +++ b/src/targets/swift/urlsession/fixtures/text-plain.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let headers = ["content-type": "text/plain"] diff --git a/src/targets/swift/urlsession/fixtures/timeout-option.swift b/src/targets/swift/urlsession/fixtures/timeout-option.swift index 5b9526b7e..110a85fee 100644 --- a/src/targets/swift/urlsession/fixtures/timeout-option.swift +++ b/src/targets/swift/urlsession/fixtures/timeout-option.swift @@ -1,7 +1,4 @@ import Foundation -#if canImport(FoundationNetworking) - import FoundationNetworking -#endif let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) From a85267b396ffada48dd6cf323ea2097b90851165 Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Sat, 13 Apr 2024 01:54:25 +0900 Subject: [PATCH 07/11] no declaration headers --- src/targets/swift/urlsession/client.ts | 23 +++++++------------ .../fixtures/application-form-encoded.swift | 4 +--- .../fixtures/application-json.swift | 3 +-- .../swift/urlsession/fixtures/cookies.swift | 4 +--- .../swift/urlsession/fixtures/full.swift | 12 ++++------ .../swift/urlsession/fixtures/headers.swift | 12 ++++------ .../urlsession/fixtures/json-null-value.swift | 3 +-- .../fixtures/jsonObj-multiline.swift | 3 +-- .../fixtures/jsonObj-null-value.swift | 3 +-- .../urlsession/fixtures/multipart-data.swift | 3 +-- .../urlsession/fixtures/multipart-file.swift | 3 +-- .../multipart-form-data-no-params.swift | 4 +--- .../fixtures/multipart-form-data.swift | 3 +-- .../fixtures/postdata-malformed.swift | 4 +--- .../urlsession/fixtures/pretty-option.swift | 4 +--- .../urlsession/fixtures/text-plain.swift | 4 +--- 16 files changed, 31 insertions(+), 61 deletions(-) diff --git a/src/targets/swift/urlsession/client.ts b/src/targets/swift/urlsession/client.ts index eda6de0c5..93977af97 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -10,7 +10,7 @@ import type { Client } from '../../index.js'; import { CodeBuilder } from '../../../helpers/code-builder.js'; -import { literalDeclaration } from '../helpers.js'; +import { literalRepresentation, literalDeclaration } from '../helpers.js'; export interface UrlsessionOptions { pretty?: boolean; @@ -37,13 +37,7 @@ export const urlsession: Client = { // We just want to make sure people understand that is the only dependency push('import Foundation'); - - const hasHeaders = Object.keys(allHeaders).length > 0; - - if (hasHeaders) { - blank(); - push(literalDeclaration('headers', allHeaders, opts)); - } + blank(); const hasBody = postData.text || postData.jsonObj || postData.params; if (hasBody) { @@ -52,13 +46,13 @@ export const urlsession: Client = { // By appending parameters one by one in the resulting snippet, // we make it easier for the user to edit it according to his or her needs after pasting. // The user can just add/remove lines adding/removing body parameters. - blank(); if (postData.params?.length) { const [head, ...tail] = postData.params; push(`${tail.length > 0 ? 'var' : 'let'} postData = Data("${head.name}=${head.value}".utf8)`); tail.forEach(({ name, value }) => { push(`postData.append(Data("&${name}=${value}".utf8))`); }); + blank(); } break; @@ -66,8 +60,8 @@ export const urlsession: Client = { if (postData.jsonObj) { push(`${literalDeclaration('parameters', postData.jsonObj, opts)} as [String : Any]`); blank(); - push('let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])'); + blank(); } break; @@ -101,16 +95,15 @@ export const urlsession: Client = { push('body += "\\r\\n\\r\\n\\(paramValue)"', 2); push('}', 1); push('}'); + blank(); break; default: - blank(); push(`let postData = Data("${postData.text}".utf8)`); + blank(); } } - blank(); - push(`let url = URL(string: "${uriObj.href}")!`); const queries = queryObj ? Object.entries(queryObj) : []; @@ -144,8 +137,8 @@ export const urlsession: Client = { push(`request.httpMethod = "${method}"`); push(`request.timeoutInterval = ${opts.timeout}`); - if (hasHeaders) { - push('request.allHTTPHeaderFields = headers'); + if (Object.keys(allHeaders).length) { + push(`request.allHTTPHeaderFields = ${literalRepresentation(allHeaders, opts)}`); } if (hasBody) { diff --git a/src/targets/swift/urlsession/fixtures/application-form-encoded.swift b/src/targets/swift/urlsession/fixtures/application-form-encoded.swift index f2fe4d89a..053af5d8d 100644 --- a/src/targets/swift/urlsession/fixtures/application-form-encoded.swift +++ b/src/targets/swift/urlsession/fixtures/application-form-encoded.swift @@ -1,7 +1,5 @@ import Foundation -let headers = ["content-type": "application/x-www-form-urlencoded"] - var postData = Data("foo=bar".utf8) postData.append(Data("&hello=world".utf8)) @@ -9,7 +7,7 @@ let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" request.timeoutInterval = 10 -request.allHTTPHeaderFields = headers +request.allHTTPHeaderFields = ["content-type": "application/x-www-form-urlencoded"] request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/application-json.swift b/src/targets/swift/urlsession/fixtures/application-json.swift index 1f89adcbb..40eebf951 100644 --- a/src/targets/swift/urlsession/fixtures/application-json.swift +++ b/src/targets/swift/urlsession/fixtures/application-json.swift @@ -1,6 +1,5 @@ import Foundation -let headers = ["content-type": "application/json"] let parameters = [ "number": 1, "string": "f\"oo", @@ -16,7 +15,7 @@ let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" request.timeoutInterval = 10 -request.allHTTPHeaderFields = headers +request.allHTTPHeaderFields = ["content-type": "application/json"] request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/cookies.swift b/src/targets/swift/urlsession/fixtures/cookies.swift index 8a726c362..7ffaac8d7 100644 --- a/src/targets/swift/urlsession/fixtures/cookies.swift +++ b/src/targets/swift/urlsession/fixtures/cookies.swift @@ -1,12 +1,10 @@ import Foundation -let headers = ["cookie": "foo=bar; bar=baz"] - let url = URL(string: "https://httpbin.org/cookies")! var request = URLRequest(url: url) request.httpMethod = "GET" request.timeoutInterval = 10 -request.allHTTPHeaderFields = headers +request.allHTTPHeaderFields = ["cookie": "foo=bar; bar=baz"] let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/full.swift b/src/targets/swift/urlsession/fixtures/full.swift index 312434ca0..1830912f5 100644 --- a/src/targets/swift/urlsession/fixtures/full.swift +++ b/src/targets/swift/urlsession/fixtures/full.swift @@ -1,11 +1,5 @@ import Foundation -let headers = [ - "cookie": "foo=bar; bar=baz", - "accept": "application/json", - "content-type": "application/x-www-form-urlencoded" -] - let postData = Data("foo=bar".utf8) let url = URL(string: "https://httpbin.org/anything?key=value")! @@ -21,7 +15,11 @@ components.queryItems = components.queryItems.map { $0 + queryItems } ?? queryIt var request = URLRequest(url: components.url!) request.httpMethod = "POST" request.timeoutInterval = 10 -request.allHTTPHeaderFields = headers +request.allHTTPHeaderFields = [ + "cookie": "foo=bar; bar=baz", + "accept": "application/json", + "content-type": "application/x-www-form-urlencoded" +] request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/headers.swift b/src/targets/swift/urlsession/fixtures/headers.swift index b86241d74..7bb9413bb 100644 --- a/src/targets/swift/urlsession/fixtures/headers.swift +++ b/src/targets/swift/urlsession/fixtures/headers.swift @@ -1,17 +1,15 @@ import Foundation -let headers = [ +let url = URL(string: "https://httpbin.org/headers")! +var request = URLRequest(url: url) +request.httpMethod = "GET" +request.timeoutInterval = 10 +request.allHTTPHeaderFields = [ "accept": "application/json", "x-foo": "Bar", "x-bar": "Foo", "quoted-value": "\"quoted\" 'string'" ] -let url = URL(string: "https://httpbin.org/headers")! -var request = URLRequest(url: url) -request.httpMethod = "GET" -request.timeoutInterval = 10 -request.allHTTPHeaderFields = headers - let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/json-null-value.swift b/src/targets/swift/urlsession/fixtures/json-null-value.swift index 8d33be2c2..d34f232af 100644 --- a/src/targets/swift/urlsession/fixtures/json-null-value.swift +++ b/src/targets/swift/urlsession/fixtures/json-null-value.swift @@ -1,6 +1,5 @@ import Foundation -let headers = ["content-type": "application/json"] let parameters = ["foo": nil] as [String : Any] let postData = try JSONSerialization.data(withJSONObject: parameters, options: []) @@ -9,7 +8,7 @@ let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" request.timeoutInterval = 10 -request.allHTTPHeaderFields = headers +request.allHTTPHeaderFields = ["content-type": "application/json"] request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift b/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift index ebbce8995..34e3bf2c8 100644 --- a/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift +++ b/src/targets/swift/urlsession/fixtures/jsonObj-multiline.swift @@ -1,6 +1,5 @@ import Foundation -let headers = ["content-type": "application/json"] let parameters = ["foo": "bar"] as [String : Any] let postData = try JSONSerialization.data(withJSONObject: parameters, options: []) @@ -9,7 +8,7 @@ let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" request.timeoutInterval = 10 -request.allHTTPHeaderFields = headers +request.allHTTPHeaderFields = ["content-type": "application/json"] request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift b/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift index 8d33be2c2..d34f232af 100644 --- a/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift +++ b/src/targets/swift/urlsession/fixtures/jsonObj-null-value.swift @@ -1,6 +1,5 @@ import Foundation -let headers = ["content-type": "application/json"] let parameters = ["foo": nil] as [String : Any] let postData = try JSONSerialization.data(withJSONObject: parameters, options: []) @@ -9,7 +8,7 @@ let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" request.timeoutInterval = 10 -request.allHTTPHeaderFields = headers +request.allHTTPHeaderFields = ["content-type": "application/json"] request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/multipart-data.swift b/src/targets/swift/urlsession/fixtures/multipart-data.swift index 62ba916d9..ac63b70be 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-data.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-data.swift @@ -1,6 +1,5 @@ import Foundation -let headers = ["content-type": "multipart/form-data; boundary=---011000010111000001101001"] let parameters = [ [ "name": "foo", @@ -40,7 +39,7 @@ let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" request.timeoutInterval = 10 -request.allHTTPHeaderFields = headers +request.allHTTPHeaderFields = ["content-type": "multipart/form-data; boundary=---011000010111000001101001"] request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/multipart-file.swift b/src/targets/swift/urlsession/fixtures/multipart-file.swift index 93df14e48..0c8f0af23 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-file.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-file.swift @@ -1,6 +1,5 @@ import Foundation -let headers = ["content-type": "multipart/form-data; boundary=---011000010111000001101001"] let parameters = [ [ "name": "foo", @@ -35,7 +34,7 @@ let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" request.timeoutInterval = 10 -request.allHTTPHeaderFields = headers +request.allHTTPHeaderFields = ["content-type": "multipart/form-data; boundary=---011000010111000001101001"] request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) 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 6de34c458..3e6dc16d7 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 @@ -1,12 +1,10 @@ import Foundation -let headers = ["Content-Type": "multipart/form-data"] - let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" request.timeoutInterval = 10 -request.allHTTPHeaderFields = headers +request.allHTTPHeaderFields = ["Content-Type": "multipart/form-data"] let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/multipart-form-data.swift b/src/targets/swift/urlsession/fixtures/multipart-form-data.swift index f55fee625..5098d8253 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-form-data.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-form-data.swift @@ -1,6 +1,5 @@ import Foundation -let headers = ["Content-Type": "multipart/form-data; boundary=---011000010111000001101001"] let parameters = [ [ "name": "foo", @@ -34,7 +33,7 @@ let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" request.timeoutInterval = 10 -request.allHTTPHeaderFields = headers +request.allHTTPHeaderFields = ["Content-Type": "multipart/form-data; boundary=---011000010111000001101001"] request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) diff --git a/src/targets/swift/urlsession/fixtures/postdata-malformed.swift b/src/targets/swift/urlsession/fixtures/postdata-malformed.swift index 82b7c8cd6..d3e7ff6e6 100644 --- a/src/targets/swift/urlsession/fixtures/postdata-malformed.swift +++ b/src/targets/swift/urlsession/fixtures/postdata-malformed.swift @@ -1,12 +1,10 @@ import Foundation -let headers = ["content-type": "application/json"] - let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" request.timeoutInterval = 10 -request.allHTTPHeaderFields = headers +request.allHTTPHeaderFields = ["content-type": "application/json"] let (data, response) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self)) \ No newline at end of file diff --git a/src/targets/swift/urlsession/fixtures/pretty-option.swift b/src/targets/swift/urlsession/fixtures/pretty-option.swift index 236ba223b..10f19ea90 100644 --- a/src/targets/swift/urlsession/fixtures/pretty-option.swift +++ b/src/targets/swift/urlsession/fixtures/pretty-option.swift @@ -1,7 +1,5 @@ import Foundation -let headers = ["cookie": "foo=bar; bar=baz", "accept": "application/json", "content-type": "application/x-www-form-urlencoded"] - let postData = Data("foo=bar".utf8) let url = URL(string: "https://httpbin.org/anything?key=value")! @@ -17,7 +15,7 @@ components.queryItems = components.queryItems.map { $0 + queryItems } ?? queryIt var request = URLRequest(url: components.url!) request.httpMethod = "POST" request.timeoutInterval = 10 -request.allHTTPHeaderFields = headers +request.allHTTPHeaderFields = ["cookie": "foo=bar; bar=baz", "accept": "application/json", "content-type": "application/x-www-form-urlencoded"] request.httpBody = postData 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 85c6e449d..4a3fa9cf4 100644 --- a/src/targets/swift/urlsession/fixtures/text-plain.swift +++ b/src/targets/swift/urlsession/fixtures/text-plain.swift @@ -1,14 +1,12 @@ import Foundation -let headers = ["content-type": "text/plain"] - let postData = Data("Hello World".utf8) let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" request.timeoutInterval = 10 -request.allHTTPHeaderFields = headers +request.allHTTPHeaderFields = ["content-type": "text/plain"] request.httpBody = postData let (data, response) = try await URLSession.shared.data(for: request) From 46b1ee065d42f585bdece41ef5b0dbb84e9348f6 Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Sat, 13 Apr 2024 02:11:56 +0900 Subject: [PATCH 08/11] indent change to argument --- 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 93977af97..12be8c626 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -118,11 +118,11 @@ export const urlsession: Client = { const value = query[1]; switch (Object.prototype.toString.call(value)) { case '[object String]': - push(`${opts.indent}URLQueryItem(name: "${key}", value: "${value}"),`); + push(`URLQueryItem(name: "${key}", value: "${value}"),`, 1); break; case '[object Array]': (value as string[]).forEach((val: string) => { - push(`${opts.indent}URLQueryItem(name: "${key}", value: "${val}"),`); + push(`URLQueryItem(name: "${key}", value: "${val}"),`, 1); }); break; } From b75fe9d4c4c4b2f074866a0da7b12a4bf10ca038 Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Sat, 13 Apr 2024 02:12:09 +0900 Subject: [PATCH 09/11] fix multipart/form-data --- src/targets/swift/urlsession/client.ts | 8 +++----- .../swift/urlsession/fixtures/multipart-data.swift | 8 +++----- .../swift/urlsession/fixtures/multipart-file.swift | 8 +++----- .../swift/urlsession/fixtures/multipart-form-data.swift | 8 +++----- 4 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/targets/swift/urlsession/client.ts b/src/targets/swift/urlsession/client.ts index 12be8c626..5b4445b98 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -77,17 +77,13 @@ export const urlsession: Client = { push(`let boundary = "${postData.boundary}"`); blank(); push('var body = ""'); - push('var error: NSError? = nil'); push('for param in parameters {'); push('let paramName = param["name"]!', 1); push('body += "--\\(boundary)\\r\\n"', 1); push('body += "Content-Disposition:form-data; name=\\"\\(paramName)\\""', 1); push('if let filename = param["fileName"] {', 1); push('let contentType = param["content-type"]!', 2); - push('let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)', 2); - push('if (error != nil) {', 2); - push('print(error as Any)', 3); - push('}', 2); + push('let fileContent = try String(contentsOfFile: filename, encoding: .utf8)', 2); push('body += "; filename=\\"\\(filename)\\"\\r\\n"', 2); push('body += "Content-Type: \\(contentType)\\r\\n\\r\\n"', 2); push('body += fileContent', 2); @@ -96,6 +92,8 @@ export const urlsession: Client = { push('}', 1); push('}'); blank(); + push('let postData = Data(body.utf8)'); + blank(); break; default: diff --git a/src/targets/swift/urlsession/fixtures/multipart-data.swift b/src/targets/swift/urlsession/fixtures/multipart-data.swift index ac63b70be..56a45a881 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-data.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-data.swift @@ -16,17 +16,13 @@ let parameters = [ let boundary = "---011000010111000001101001" var body = "" -var error: NSError? = nil for param in parameters { let paramName = param["name"]! body += "--\(boundary)\r\n" body += "Content-Disposition:form-data; name=\"\(paramName)\"" if let filename = param["fileName"] { let contentType = param["content-type"]! - let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8) - if (error != nil) { - print(error as Any) - } + let fileContent = try String(contentsOfFile: filename, encoding: .utf8) body += "; filename=\"\(filename)\"\r\n" body += "Content-Type: \(contentType)\r\n\r\n" body += fileContent @@ -35,6 +31,8 @@ for param in parameters { } } +let postData = Data(body.utf8) + let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" diff --git a/src/targets/swift/urlsession/fixtures/multipart-file.swift b/src/targets/swift/urlsession/fixtures/multipart-file.swift index 0c8f0af23..19a5bbede 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-file.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-file.swift @@ -11,17 +11,13 @@ let parameters = [ let boundary = "---011000010111000001101001" var body = "" -var error: NSError? = nil for param in parameters { let paramName = param["name"]! body += "--\(boundary)\r\n" body += "Content-Disposition:form-data; name=\"\(paramName)\"" if let filename = param["fileName"] { let contentType = param["content-type"]! - let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8) - if (error != nil) { - print(error as Any) - } + let fileContent = try String(contentsOfFile: filename, encoding: .utf8) body += "; filename=\"\(filename)\"\r\n" body += "Content-Type: \(contentType)\r\n\r\n" body += fileContent @@ -30,6 +26,8 @@ for param in parameters { } } +let postData = Data(body.utf8) + let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" diff --git a/src/targets/swift/urlsession/fixtures/multipart-form-data.swift b/src/targets/swift/urlsession/fixtures/multipart-form-data.swift index 5098d8253..ec50e6d8f 100644 --- a/src/targets/swift/urlsession/fixtures/multipart-form-data.swift +++ b/src/targets/swift/urlsession/fixtures/multipart-form-data.swift @@ -10,17 +10,13 @@ let parameters = [ let boundary = "---011000010111000001101001" var body = "" -var error: NSError? = nil for param in parameters { let paramName = param["name"]! body += "--\(boundary)\r\n" body += "Content-Disposition:form-data; name=\"\(paramName)\"" if let filename = param["fileName"] { let contentType = param["content-type"]! - let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8) - if (error != nil) { - print(error as Any) - } + let fileContent = try String(contentsOfFile: filename, encoding: .utf8) body += "; filename=\"\(filename)\"\r\n" body += "Content-Type: \(contentType)\r\n\r\n" body += fileContent @@ -29,6 +25,8 @@ for param in parameters { } } +let postData = Data(body.utf8) + let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) request.httpMethod = "POST" From fa0531c9901f4d8dd74fb8e91e0e7d0fc096291a Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Sat, 13 Apr 2024 02:14:37 +0900 Subject: [PATCH 10/11] remove comment --- src/targets/swift/urlsession/client.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/targets/swift/urlsession/client.ts b/src/targets/swift/urlsession/client.ts index 5b4445b98..c60d8db45 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -35,7 +35,6 @@ export const urlsession: Client = { const { push, blank, join } = new CodeBuilder({ indent: opts.indent }); - // We just want to make sure people understand that is the only dependency push('import Foundation'); blank(); From 1f583ec3b22334246b49da7ee82eadca19b3cb43 Mon Sep 17 00:00:00 2001 From: zunda <47569369+zunda-pixel@users.noreply.github.com> Date: Sat, 13 Apr 2024 02:46:44 +0900 Subject: [PATCH 11/11] fix application/x-www-form-urlencoded's body --- src/targets/swift/urlsession/client.ts | 16 +++++++++++----- .../fixtures/application-form-encoded.swift | 8 ++++++-- src/targets/swift/urlsession/fixtures/full.swift | 6 +++++- .../urlsession/fixtures/pretty-option.swift | 4 +++- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/targets/swift/urlsession/client.ts b/src/targets/swift/urlsession/client.ts index c60d8db45..ec0b7c9a5 100644 --- a/src/targets/swift/urlsession/client.ts +++ b/src/targets/swift/urlsession/client.ts @@ -46,11 +46,17 @@ export const urlsession: Client = { // we make it easier for the user to edit it according to his or her needs after pasting. // The user can just add/remove lines adding/removing body parameters. if (postData.params?.length) { - const [head, ...tail] = postData.params; - push(`${tail.length > 0 ? 'var' : 'let'} postData = Data("${head.name}=${head.value}".utf8)`); - tail.forEach(({ name, value }) => { - push(`postData.append(Data("&${name}=${value}".utf8))`); - }); + const parameters = postData.params.map(p => `"${p.name}": "${p.value}"`); + if (opts.pretty) { + push('let parameters = ['); + parameters.forEach(param => push(`${param},`, 1)); + push(']'); + } else { + push(`let parameters = [${parameters.join(', ')}]`); + } + + push('let joinedParameters = parameters.map { "\\($0.key)=\\($0.value)" }.joined(separator: "&")'); + push('let postData = Data(joinedParameters.utf8)'); blank(); } break; diff --git a/src/targets/swift/urlsession/fixtures/application-form-encoded.swift b/src/targets/swift/urlsession/fixtures/application-form-encoded.swift index 053af5d8d..96b417cec 100644 --- a/src/targets/swift/urlsession/fixtures/application-form-encoded.swift +++ b/src/targets/swift/urlsession/fixtures/application-form-encoded.swift @@ -1,7 +1,11 @@ import Foundation -var postData = Data("foo=bar".utf8) -postData.append(Data("&hello=world".utf8)) +let parameters = [ + "foo": "bar", + "hello": "world", +] +let joinedParameters = parameters.map { "\($0.key)=\($0.value)" }.joined(separator: "&") +let postData = Data(joinedParameters.utf8) let url = URL(string: "https://httpbin.org/anything")! var request = URLRequest(url: url) diff --git a/src/targets/swift/urlsession/fixtures/full.swift b/src/targets/swift/urlsession/fixtures/full.swift index 1830912f5..51546cf0a 100644 --- a/src/targets/swift/urlsession/fixtures/full.swift +++ b/src/targets/swift/urlsession/fixtures/full.swift @@ -1,6 +1,10 @@ import Foundation -let postData = Data("foo=bar".utf8) +let parameters = [ + "foo": "bar", +] +let joinedParameters = parameters.map { "\($0.key)=\($0.value)" }.joined(separator: "&") +let postData = Data(joinedParameters.utf8) let url = URL(string: "https://httpbin.org/anything?key=value")! var components = URLComponents(url: url, resolvingAgainstBaseURL: true)! diff --git a/src/targets/swift/urlsession/fixtures/pretty-option.swift b/src/targets/swift/urlsession/fixtures/pretty-option.swift index 10f19ea90..fbf550675 100644 --- a/src/targets/swift/urlsession/fixtures/pretty-option.swift +++ b/src/targets/swift/urlsession/fixtures/pretty-option.swift @@ -1,6 +1,8 @@ import Foundation -let postData = Data("foo=bar".utf8) +let parameters = ["foo": "bar"] +let joinedParameters = parameters.map { "\($0.key)=\($0.value)" }.joined(separator: "&") +let postData = Data(joinedParameters.utf8) let url = URL(string: "https://httpbin.org/anything?key=value")! var components = URLComponents(url: url, resolvingAgainstBaseURL: true)!