From 6e9e76a7e0166c57bc890a15dca07d72158105be Mon Sep 17 00:00:00 2001 From: me7 Date: Fri, 11 Oct 2019 15:59:37 +0700 Subject: [PATCH 1/2] fix #11863 --- lib/pure/httpclient.nim | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/pure/httpclient.nim b/lib/pure/httpclient.nim index c26d8920c2dc4..173a80ff90a54 100644 --- a/lib/pure/httpclient.nim +++ b/lib/pure/httpclient.nim @@ -297,6 +297,16 @@ proc newMultipartData*: MultipartData = ## Constructs a new ``MultipartData`` object. MultipartData(content: @[]) + +proc `$`*(data: MultipartData): string = + ## convert MultipartData to string so it's human readable when echo + ## see https://github.com/nim-lang/Nim/issues/11863 + for pos, item in data.content: + result &= "------------------------------ " + result &= pos + result &= " ------------------------------\n" + result &= item[32 .. item.high] + proc add*(p: var MultipartData, name, content: string, filename: string = "", contentType: string = "") = ## Add a value to the multipart data. Raises a `ValueError` exception if From 6dae9c174fbdf4a2fd19313ba1d09213c331cfd0 Mon Sep 17 00:00:00 2001 From: Araq Date: Fri, 22 Nov 2019 11:35:16 +0100 Subject: [PATCH 2/2] improved the code; refs #12412 --- lib/pure/httpclient.nim | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/pure/httpclient.nim b/lib/pure/httpclient.nim index 8f6d79c672a7e..d918be73574ec 100644 --- a/lib/pure/httpclient.nim +++ b/lib/pure/httpclient.nim @@ -175,6 +175,8 @@ ## let client = newHttpClient(maxRedirects = 0) ## +include "system/inclrtl" + import net, strutils, uri, parseutils, base64, os, mimetypes, math, random, httpcore, times, tables, streams, std/monotimes import asyncnet, asyncdispatch, asyncfile @@ -298,14 +300,15 @@ proc newMultipartData*: MultipartData = MultipartData(content: @[]) -proc `$`*(data: MultipartData): string = +proc `$`*(data: MultipartData): string {.since: (1, 1).} = ## convert MultipartData to string so it's human readable when echo ## see https://github.com/nim-lang/Nim/issues/11863 + const prefixLen = "Content-Disposition: form-data; ".len for pos, item in data.content: - result &= "------------------------------ " - result &= pos + result &= "------------------------------ " + result.addInt pos result &= " ------------------------------\n" - result &= item[32 .. item.high] + result &= item[prefixLen .. item.high] proc add*(p: var MultipartData, name, content: string, filename: string = "", contentType: string = "") =