[wp-hackers] HTTP API Refactoring

Jacob Santos wordpress at santosj.name
Thu Aug 20 17:07:39 UTC 2009


I went ahead and started to refactor the HTTP API to make it either suck 
more or suck less. I'm not happy with the design of the architecture. It 
is very restrictive in that in order to add something, you have to 
modify the core and that is not how I would have liked it.

The second problem is that the arguments aren't completely supported in 
all of the transports. I had wanted for the developer to do this:

$request = new WP_Http_Fsockopen('http://www.google.com', 
array('whatever' => 'what'));

But most of the arguments aren't supported, so I thought that instead of 
abstracting the arguments, I would refactor the entire request process 
into something like this:

$request = new WP_Http_Request('http://www.google.com');
$request->override_defaults(array('user_agent' => 'Custom'));
$request->set_transport('WP_Http_Fsockopen');
$request->send();

It is a bit more work , but it allows for someone to use any transport 
separately from WP_Http, which restricts to just the ones that actually 
work and in a specific order.

I already started work on it and I'm moving a lot of the code from 
WP_Http into their own classes, so that the Header code will be managed 
by its own class, since a lot of the code in the HTTP API classes deals 
with headers.

Any ideas? I'm still not exactly sure how to make it to where 
modifications could be plugins, but well, the filters should be used. At 
least with this proposal, the request class can be extended or replaced 
in the WP_Http class. I'm about a third or half way finished.

Jacob Santos


More information about the wp-hackers mailing list