fix/Improve Komga patch operation robustness #262
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR improves the robustness of patch operations sent to Komga by adding validation for URLs and handling invalid
totalBookCountvalues. These changes prevent Komga from rejecting metadata updates due to invalid data.Changes
1. URL Validation (
safeUrlOrNullfunction)safeUrlOrNullhelper function that validates URLs before sending them to Komgahttporhttpsschemenullinstead of crashingWhy this is needed: Komga rejects URLs that don't have proper schemes or hosts, which can cause metadata update operations to fail. This validation ensures only valid URLs are sent to Komga.
2. Invalid
totalBookCountHandlingtotalBookCountvalues that are<= 0before sending to KomgaWhy this is needed: Komga rejects
totalBookCountvalues that are zero or negative, which can cause metadata updates to fail. By filtering out invalid values, we ensure the patch operation succeeds even when providers return invalid data.Impact
totalBookCountvaluesTesting
The changes have been tested with:
totalBookCountvalues (0, negative numbers)Files Changed
komf-mediaserver/src/commonMain/kotlin/snd/komf/mediaserver/komga/KomgaMediaServerClientAdapter.kt