-
Notifications
You must be signed in to change notification settings - Fork 14
Rewrite AsyncHttp\Client for cleaner API and Transfer-Encoding support #113
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
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
An exploration to support Transfer-Encoding: chunked and Content-encoding: gzip. A larger refactor may need to follow.
ef41a68 to
2cda531
Compare
adamziel
added a commit
to adamziel/site-transfer-protocol
that referenced
this pull request
Jul 15, 2024
The code got much simpler plus we can easily expand to stream-rewriting remote pages or even zip archives (with the ZIP Processor). See WordPress/php-toolkit#113
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.
Refactors the
AsyncHttp\Clientto simplify the usage and the internal implementation. This will be helpful for rewriting URLs in WordPress posts and downloading the related assets.As a reminder,
AsyncHttp\Clientis a PHP HTTP client that can do asynchronous processing of multiple requests without curl or any other dependencies.Changes
await_next_event()as a single, filterable interface for consuming all the HTTP activity. Remove theonProgresscallback and various other ways of waiting for information on specific requests.event_loop_tick()function that runs all the available non-blocking operations.Clientclass. It is now less generic, but I'd argue it already wasn't that generic and at least now we can avoid going back and froth between functions and that class.Transfer-Encoding: chunked,Transfer-Encoding: gzip, andContent-Encoding: gzipvia stream wrappers.Clientobject so we no longer have to go out of our way to store data in stream context, struggle with stream filters, passthrough data between stream wrappers layers etc.This PR also ships an implementation of a HTTP proxy built with this client library – it could come handy for running an in-browser Git client:
https://github.com/WordPress/blueprints-library/blob/http-client-api-refactir/http_proxy.php
Usage example
HTTP Proxy example
Future work
cc @dmsnell @maypaw @reimic