Skip to content

Commit 2a50a0b

Browse files
Copilotfarfromrefug
andcommitted
Fix parameter encoding in Swift wrapper and add error key constants
Agent-Logs-Url: https://github.com/nativescript-community/https/sessions/fc9101f9-5596-43a3-ab69-ff9c48eeef06 Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
1 parent 0ec2ac6 commit 2a50a0b

File tree

3 files changed

+17
-22
lines changed

3 files changed

+17
-22
lines changed

packages/https/platforms/ios/src/AlamofireWrapper.swift

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -82,21 +82,17 @@ public class AlamofireWrapper: NSObject {
8282
request = try requestSerializer.createRequest(
8383
url: url,
8484
method: HTTPMethod(rawValue: method.uppercased()),
85-
parameters: parameters,
85+
parameters: nil,
8686
headers: headers
8787
)
88+
// Encode parameters into the request
89+
try requestSerializer.encodeParameters(parameters, into: &request, method: HTTPMethod(rawValue: method.uppercased()))
8890
} catch {
8991
failure(nil, error)
9092
return nil
9193
}
9294

93-
var afRequest: DataRequest
94-
95-
if let jsonData = parameters as? Data {
96-
afRequest = session.upload(jsonData, with: request)
97-
} else {
98-
afRequest = session.request(request)
99-
}
95+
var afRequest: DataRequest = session.request(request)
10096

10197
// Apply server trust evaluation if security policy is set
10298
if let secPolicy = securityPolicy {
@@ -360,32 +356,30 @@ public class RequestSerializer: NSObject {
360356
}
361357
}
362358

359+
return request
360+
}
361+
362+
public func encodeParameters(_ parameters: NSDictionary?, into request: inout URLRequest, method: HTTPMethod) throws {
363363
// Encode parameters
364364
if let parameters = parameters {
365365
if method == .post || method == .put || method == .patch {
366366
// For POST/PUT/PATCH, encode as JSON in body
367-
if let dict = parameters as? [String: Any] {
368-
let jsonData = try JSONSerialization.data(withJSONObject: dict, options: [])
369-
request.httpBody = jsonData
370-
if request.value(forHTTPHeaderField: "Content-Type") == nil {
371-
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
372-
}
373-
} else if let data = parameters as? Data {
374-
request.httpBody = data
367+
let jsonData = try JSONSerialization.data(withJSONObject: parameters, options: [])
368+
request.httpBody = jsonData
369+
if request.value(forHTTPHeaderField: "Content-Type") == nil {
370+
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
375371
}
376372
} else {
377373
// For GET and others, encode as query parameters
378374
if let dict = parameters as? [String: Any] {
379-
var components = URLComponents(url: url, resolvingAgainstBaseURL: false)
375+
var components = URLComponents(url: request.url!, resolvingAgainstBaseURL: false)
380376
components?.queryItems = dict.map { URLQueryItem(name: $0.key, value: "\($0.value)") }
381377
if let urlWithQuery = components?.url {
382378
request.url = urlWithQuery
383379
}
384380
}
385381
}
386382
}
387-
388-
return request
389383
}
390384
}
391385

src/https/request.ios.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ import { CacheOptions, HttpsFormDataParam, HttpsRequest, HttpsRequestOptions, Ht
33
import { getFilenameFromUrl, parseJSON } from './request.common';
44
export { addInterceptor, addNetworkInterceptor } from './request.common';
55

6+
// Error keys used by the Swift wrapper to maintain compatibility with AFNetworking
7+
const AFNetworkingOperationFailingURLResponseErrorKey = "AFNetworkingOperationFailingURLResponseErrorKey";
8+
const AFNetworkingOperationFailingURLResponseDataErrorKey = "AFNetworkingOperationFailingURLResponseDataErrorKey";
9+
610
let cache: NSURLCache;
711

812
export function setCache(options?: CacheOptions) {

src/https/typings/objc!AlamofireWrapper.d.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,3 @@ declare const enum AFSSLPinningMode {
108108
PublicKey = 1,
109109
Certificate = 2
110110
}
111-
112-
declare const AFNetworkingOperationFailingURLResponseErrorKey: string;
113-
declare const AFNetworkingOperationFailingURLResponseDataErrorKey: string;

0 commit comments

Comments
 (0)