Commit Graph

8 Commits

Author SHA1 Message Date
Alex Humphreys
561e5bf9ab [kotlin][jvm-okhttp4] Fix multipart/form-data with JSON content-type (#22856)
* [kotlin][jvm-okhttp4] Fix multipart/form-data with JSON content-type

Fixes #16457

Fixes two critical bugs in multipart/form-data handling when parts
have Content-Type application/json:

1. IllegalArgumentException: OkHttp throws "Unexpected header: Content-Type"
   because Content-Type was passed in headers map instead of via
   asRequestBody(mediaType)/toRequestBody(mediaType) parameter.

2. Invalid JSON serialization: Non-file parts with application/json
   Content-Type were serialized using toString() instead of proper
   JSON serialization, producing invalid output like:
   "MyObject(field1=value, field2=123)" instead of
   '{"field1":"value","field2":123}'

Changes:
- Filter Content-Type from headers before passing to OkHttp
- Check part Content-Type and use appropriate serializer (JSON vs toString)
- Add integration tests with echo server to verify fix
- Support all serialization libraries (gson, moshi, jackson, kotlinx)

Fixes issues with multipart endpoints that mix file uploads with
JSON metadata, common in REST APIs for document/image uploads.

* Run mvn clean/package, and regenerate samples

* Add fix for kotlinx serialisation issue

* Refactor multipart helpers for reified type parameter support

* Fix kotlinx.serialization multipart by adding serializer lambda to PartConfig

* Fix internal Ktor API usage in multipart forms
2026-02-04 19:44:39 +08:00
William Cheng
9adfe986a3 Prepare v7.20.0 release (#22738)
* Revert "v7.19.0 release (#22732)"

This reverts commit ff400e9a31.

* prepare v7.20.0 release

* update samples

* update doc
2026-01-20 03:13:58 +08:00
William Cheng
b1b556ad63 [kotlin] Add integration test for query params (#22695)
* [kotlin] Add integration test for query params

This is a test for a regression from #22512 where param values
were written as a list.

* add test implementation for kotlin spring client

* add sha tests

---------

Co-authored-by: Piotr Kubowicz <piotr.kubowicz@gmail.com>
2026-01-14 15:34:53 +08:00
William Cheng
23eff6672f Prepare v7.19.0 snapshot (#22569)
* Revert "7.18.0 release (#22567)"

This reverts commit 51228436e0.

* prepare 7.19.0 snapshot

* update samples

* update doc

* fix date
2025-12-22 19:25:23 +08:00
Piotr Kubowicz
7b83462a83 [kotlin] Make API classes open (non-final) unless nonPublicApi is used (#22461)
* [kotlin] Make API classes open (non-final) unless nonPublicApi is used

By making those classes open, AspectJ can be used to enhance their
behavior.

I'm not changing kotlin-multiplatform templates, where 'open' was
already present before my changes.

Closes #22271

* Fail Kotlin sample compilation if API classes stop to be public

Serves as a 'regression test'.
2025-12-01 00:03:29 +08:00
William Cheng
3d6e9d5693 better format in build.gradle (kotlin) (#22439) 2025-11-26 17:41:17 +08:00
Konstantin Ignatyev
b9d4b56d1c added ability to publish kotlin-client to maven local repo (#22438)
* this allows pushing client jar to local maven repository gradle -i clean jar publishToMavenLocal;  also generates jar with sources;

* this allows pushing client jar to local maven repository gradle -i clean jar publishToMavenLocal;  also generates jar with sources;
2025-11-26 16:59:41 +08:00
William Cheng
886e4a6dd0 [kotlin] Test array integer (enum) with kotlin client generator (#22336)
* add tests for array of enum

* update
2025-11-12 16:39:01 +08:00