Releases: ahparhizgar/katch
Releases · ahparhizgar/katch
Release list
v0.2.0
Release v0.2.0 — Rename and Bug Fixes
Changelog
- Project renamed: The library is now called Katch—because it helps you catch exceptions and errors.
- Bug fix:
extractPayloadis now asuspendfunction. Previously, it couldn't safely extract the response body because reading the body requires a suspend context. - New feature: Debug message extraction is now supported. When available, the extracted debug message is exposed as the
messageofClientErrorandServerError.
v0.1.0
Release v0.1.0 — Initial release
Highlights
Typed error hierarchy: ApiCallError base plus InvalidDataError, NetworkError, HttpError with ServerError and ClientError (including BadRequest, Unauthorized, Forbidden, NotFound, RateLimitReached, OtherClientError).
- Ktor plugin:
ApiCallErrorPluginthat converts HTTP 4xx/5xx, network failures, and serialization issues into the typed errors. - Payload extraction: plugin supports an extractPayload hook to parse structured server error payloads (optional; uses installed content negotiation).
- Data validation helpers: small utilities to produce InvalidDataError for parsing/validation failures.
- Manual usage: error classes are usable without Ktor for manual error construction and handling.
Setup & distribution
Published for use via JitPack; add JitPack to settings.gradle.kts and depend on the artifacts in build.gradle.kts.
- Artifacts in this release: core library and Ktor plugin packages (see README for coordinates).
Usage notes - Recommended: install ApiCallErrorPlugin into Ktor HttpClient for automatic mapping. - Errors can be caught as
ApiCallErrorand inspected by concrete subtype for specific handling.
Requirements - Kotlin Multiplatform (common code) support. - For the Ktor plugin: Ktor Client 3.0.0 or higher.
- Maven Central publishing not available in this release; JitPack is the only distribution.
- Initial public release — API may evolve in minor follow-ups.
Contributing & License
Issues, contributions, and feedback welcome via the repository. See the repo for contribution guidelines and license details.