Add structured error handling with GeonamesException#25
Merged
Conversation
- Add ConverterInterface contract for converter implementations - Add GeonamesException with factory methods for domain-specific errors - Extract common logic into AbstractConverter and AbstractGazetteerConverter - Extract common downloader logic into AbstractDownloader - Simplify converter classes by inheriting from abstract base classes - Add comprehensive test coverage for converters and console commands - Update phpstan configuration for new classes
The describe() function in Pest had stability issues in earlier 2.x versions when used with prefer-lowest dependency resolution. Updating the minimum version to ^2.34 ensures proper describe() support.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
GeonamesExceptionclass with factory methods for clear, actionable error messages:fileOperationFailed()- descriptive errors for file read/write failureszipOperationFailed()- specific errors when ZIP extraction failsdataNotFound()- clear messages when expected data is missingdependencyMissing()- helpful errors with installation instructionsConverterInterfacecontract for consistent converter behaviorTest plan