@readme/httpsnippet 10.0.2 → 10.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -3311,36 +3311,28 @@ var urlsession = {
3311
3311
  const opts = {
3312
3312
  indent: " ",
3313
3313
  pretty: true,
3314
- timeout: "10",
3314
+ timeout: 10,
3315
3315
  ...options
3316
3316
  };
3317
3317
  const { push, blank, join } = new CodeBuilder({ indent: opts.indent });
3318
- const req = {
3319
- hasHeaders: false,
3320
- hasBody: false
3321
- };
3322
3318
  push("import Foundation");
3323
- push("#if canImport(FoundationNetworking)");
3324
- push(" import FoundationNetworking");
3325
- push("#endif");
3326
- if (Object.keys(allHeaders).length) {
3327
- req.hasHeaders = true;
3328
- blank();
3329
- push(literalDeclaration("headers", allHeaders, opts));
3330
- }
3331
- if (postData.text || postData.jsonObj || postData.params) {
3332
- req.hasBody = true;
3319
+ blank();
3320
+ const hasBody = postData.text || postData.jsonObj || postData.params;
3321
+ if (hasBody) {
3333
3322
  switch (postData.mimeType) {
3334
3323
  case "application/x-www-form-urlencoded":
3335
- blank();
3336
3324
  if (postData.params?.length) {
3337
- const [head, ...tail] = postData.params;
3338
- push(`${tail.length > 0 ? "var" : "let"} postData = Data("${head.name}=${head.value}".utf8)`);
3339
- tail.forEach(({ name, value }) => {
3340
- push(`postData.append(Data("&${name}=${value}".utf8))`);
3341
- });
3342
- } else {
3343
- req.hasBody = false;
3325
+ const parameters = postData.params.map((p) => `"${p.name}": "${p.value}"`);
3326
+ if (opts.pretty) {
3327
+ push("let parameters = [");
3328
+ parameters.forEach((param) => push(`${param},`, 1));
3329
+ push("]");
3330
+ } else {
3331
+ push(`let parameters = [${parameters.join(", ")}]`);
3332
+ }
3333
+ push('let joinedParameters = parameters.map { "\\($0.key)=\\($0.value)" }.joined(separator: "&")');
3334
+ push("let postData = Data(joinedParameters.utf8)");
3335
+ blank();
3344
3336
  }
3345
3337
  break;
3346
3338
  case "application/json":
@@ -3348,6 +3340,7 @@ var urlsession = {
3348
3340
  push(`${literalDeclaration("parameters", postData.jsonObj, opts)} as [String : Any]`);
3349
3341
  blank();
3350
3342
  push("let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])");
3343
+ blank();
3351
3344
  }
3352
3345
  break;
3353
3346
  case "multipart/form-data":
@@ -3356,17 +3349,13 @@ var urlsession = {
3356
3349
  push(`let boundary = "${postData.boundary}"`);
3357
3350
  blank();
3358
3351
  push('var body = ""');
3359
- push("var error: NSError? = nil");
3360
3352
  push("for param in parameters {");
3361
3353
  push('let paramName = param["name"]!', 1);
3362
3354
  push('body += "--\\(boundary)\\r\\n"', 1);
3363
3355
  push('body += "Content-Disposition:form-data; name=\\"\\(paramName)\\""', 1);
3364
3356
  push('if let filename = param["fileName"] {', 1);
3365
3357
  push('let contentType = param["content-type"]!', 2);
3366
- push("let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)", 2);
3367
- push("if (error != nil) {", 2);
3368
- push("print(error as Any)", 3);
3369
- push("}", 2);
3358
+ push("let fileContent = try String(contentsOfFile: filename, encoding: .utf8)", 2);
3370
3359
  push('body += "; filename=\\"\\(filename)\\"\\r\\n"', 2);
3371
3360
  push('body += "Content-Type: \\(contentType)\\r\\n\\r\\n"', 2);
3372
3361
  push("body += fileContent", 2);
@@ -3374,13 +3363,15 @@ var urlsession = {
3374
3363
  push('body += "\\r\\n\\r\\n\\(paramValue)"', 2);
3375
3364
  push("}", 1);
3376
3365
  push("}");
3366
+ blank();
3367
+ push("let postData = Data(body.utf8)");
3368
+ blank();
3377
3369
  break;
3378
3370
  default:
3379
- blank();
3380
3371
  push(`let postData = Data("${postData.text}".utf8)`);
3372
+ blank();
3381
3373
  }
3382
3374
  }
3383
- blank();
3384
3375
  push(`let url = URL(string: "${uriObj.href}")!`);
3385
3376
  const queries = queryObj ? Object.entries(queryObj) : [];
3386
3377
  if (queries.length < 1) {
@@ -3393,11 +3384,11 @@ var urlsession = {
3393
3384
  const value = query[1];
3394
3385
  switch (Object.prototype.toString.call(value)) {
3395
3386
  case "[object String]":
3396
- push(`${opts.indent}URLQueryItem(name: "${key}", value: "${value}"),`);
3387
+ push(`URLQueryItem(name: "${key}", value: "${value}"),`, 1);
3397
3388
  break;
3398
3389
  case "[object Array]":
3399
3390
  value.forEach((val) => {
3400
- push(`${opts.indent}URLQueryItem(name: "${key}", value: "${val}"),`);
3391
+ push(`URLQueryItem(name: "${key}", value: "${val}"),`, 1);
3401
3392
  });
3402
3393
  break;
3403
3394
  }
@@ -3408,16 +3399,16 @@ var urlsession = {
3408
3399
  push("var request = URLRequest(url: components.url!)");
3409
3400
  }
3410
3401
  push(`request.httpMethod = "${method}"`);
3411
- if (req.hasHeaders) {
3412
- push("request.allHTTPHeaderFields = headers");
3402
+ push(`request.timeoutInterval = ${opts.timeout}`);
3403
+ if (Object.keys(allHeaders).length) {
3404
+ push(`request.allHTTPHeaderFields = ${literalRepresentation3(allHeaders, opts)}`);
3413
3405
  }
3414
- if (req.hasBody) {
3406
+ if (hasBody) {
3415
3407
  push("request.httpBody = postData");
3416
3408
  }
3417
3409
  blank();
3418
3410
  push("let (data, response) = try await URLSession.shared.data(for: request)");
3419
3411
  push("print(String(decoding: data, as: UTF8.self))");
3420
- blank();
3421
3412
  return join();
3422
3413
  }
3423
3414
  };