ContainerRegistry: Add a struct to represent a registry operation #29
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.
Motivation
RegistryClient.executeRequestThrowing
currently takes anHTTPRequest
struct parameter and executes it using the underlyingHTTPClient
. It augmentsHTTPClient
by handling authentication challenges and decodes JSON error responses, but the use ofHTTPRequest
means that the caller is responsible for details such as generating the full distribution endpoint URL. GivingRegistryClient
its own abstract operation type frees the caller from dealing with these internal details.The struct can also be passed easily anywhere the details of the operation are required, making future improvements easier. For instance, if an operation causes an error, the original operation struct could be attached to the error making all its details available to the error handler.
Modifications
Add a struct which holds all the necessary information about a requested operation on the registry, and refactor
RegistryClient
to use it.Result
No functional change.
This refactoring makes the separation of RegistryClient and HTTPClient's responsibilities clearer, and allows us to centralise the generation of registry URLs. In the future it will make further improvements easier, such as changing how authentication is handled and providing more detailed error messages.
Test Plan
Automated tests continue to pass; also tested manually.