suspend fun postGov(
number: Int,
closeLocation: String,
closeTime: String,
openLocation: String,
openTime: String,
attachments: List<Attachment>
): Gov = httpClient.submitForm(
url = "$baseUrl/$GOVS_TABLE",
formParameters = parameters {
append("number", number.toString())
append("close location", closeLocation)
append("close time", closeTime)
append("open location", openLocation)
append("open time", openTime)
append("attachments", attachments)
}
) {
apiKeyHeader()
}.body()
append only accepts strings, and I need to pass a list of items to FormData so that FormData is something like this
{
"number": "123",
"close time": "string",
"close location": "string",
"open time": "string",
"open location": "string",
"attachments": [{"url":"https://nocohub-001-prod-app-attachments.s3.us-east-2.amazonaws.com/nc/uploads/2023/10/21/08bca39258b20ad3e4300f2a76169d3fb02c5249/HPM8jgzGzuJqLDDbbk.png","title":"ktor_logo.png","mimetype":"image/jpeg","size":30207,"signedUrl":"https://nocohub-001-prod-app-attachments.s3.us-east-2.amazonaws.com/nc/uploads/2023/10/21/08bca39258b20ad3e4300f2a76169d3fb02c5249/HPM8jgzGzuJqLDDbbk.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIATUJCOBWTKOMQ5JMU%2F20231021%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20231021T104627Z&X-Amz-Expires=7413&X-Amz-Signature=f11c2918fd2e2c49caab3d405f794650dbad75dd5abcb52476bda3afdc56c96f&X-Amz-SignedHeaders=host&x-id=GetObject"}]
}
I tried to dig into the source code, but didn't find a convenient option
EncodeToString from KotlinXSerialization helped.
This method makes json string from list.