Refactor HTTP clients: separate admin and client #76
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.
Closes #75
Overview
This PR separates the client and admin HTTP api clients in order to avoid conflicts later when implementing the Admin API.
Changes
HTTPClientAPI
andHTTPAdminAPI
classes that subclass the baseHTTPAPI
class.Implementation Details
This split is necessary to avoid future conflicts. For now if we want to retrieve a user we can use the function:
public static func getCurrent(using client: HTTPClient, callback: @escaping User.RetrieveRequestCallback) -> User.RetrieveRequest? {}
The problem is that this method will be in both client and admin APIs so we need a way to differentiate it.
The new implementation will be:
public static func getCurrent(using client: HTTPClientAPI, callback: @escaping User.RetrieveRequestCallback) -> User.RetrieveRequest? {}
for the client API, and
public static func getCurrent(using client: HTTPAdminAPI, callback: @escaping User.RetrieveRequestCallback) -> User.RetrieveRequest? {}
for the admin API.
Usage
The readme has been updated to reflect the changes. The only difference is the initialization of the client that we now do like this:
let client = HTTPClientAPI(config: config)