1
0
mirror of https://github.com/guzzle/guzzle.git synced 2025-02-25 18:43:22 +01:00

22 Commits

Author SHA1 Message Date
Michael Dowling
7665ac74b2 Updating tests so that they work with the broken behavior of returning text/x-c++ for the content-type of .php scripts 2012-07-21 22:26:00 -07:00
Michael Dowling
142e2460f2 [BC] Moving things around for subtree splits.
Moving Inflection into Common. Moving Guzzle\Http\Parser to Guzzle\Parser.
Adding composer.json files for each subtree split
Fixing failing curl test
2012-06-29 16:13:43 -07:00
Michael Dowling
1136c66774 [Http] BC: Renaming Guzzle\Http\Message\RequestInterface::getResourceUri() to getResource() 2012-06-02 21:49:42 -07:00
Michael Dowling
06834146d7 [Http] BC: Cleaning up how POST files are stored on entity enclosing requests 2012-05-30 18:49:29 -07:00
Michael Dowling
d25fc74fa0 [Http] Adding support for Content-Type in POST upload and multiple POST
uploads for the same filename.

You can specify the Content-Type of each separate multipart upload.  The
Content-Type of each file is automatically guessed if possible, and if
content-type is not explicitly set to false. Resolves #55.

[BC] Refactoring how POST files are stored on an EntityEnclosingRequest.
They are no longer mixed with the POST fields, but rather stored in an
array of separate POST files, each array key corresponding to a POST
field name, and array value containing an array of
associative arrays containing the 'file' and 'type' for each POST file.

You can still specify files and fields when using a client or request
factory, but no longer with an EntityEnclosingRequest->setPostField()
call.

Adding new POST data operations for easier manipulation of POST data.

You can now set empty POST fields.  Closes #56.

The body of a request is only shown on EntityEnclosingRequest objects
that do not use POST files.
2012-05-22 23:30:05 -07:00
Michael Dowling
764d935694 Changes to support a Guzzle\Http\Parser namespace
[Common] Adding keySearch method to Collection
[Http] Moving POST curl option logic from EntityEnclosingRequest to the
curl factory method
Directly using the HTTP request object when creating curl handles in the
factory method
No longer adding a read callback when sending POSTs through
CURLOPT_POSTFIELDS
In an effort to mitigate random segfaults and bus errors, using a queue
for removing curl and close handles from a multi object so that they are
only removed when the multi handle has finished sending all requests.
Calling reset() each time a curl multi handle has finished all requests.
EntityEnclosingRequest::getPostFields() now returns a Collection object
Simplifying the EntityEnclosingRequest::getPostFiles method
Adding an array cache to header objects
Moving the header comparison DSL from the Tests namespace to
Guzzle\Http\Message\HeaderComparison, and adding tests.
Adding message, cookie, and url parser interfaces and default
implementations.
Using a parser registry to manage globally registered parsers.  Removing parsing from Response and RequestFactory.
Renaming protocol_version to version
Changing the Guzzle\Http\Message\Response::setProtocol() method to accept a protocol and version in separate args.
Simplifying the chunked encoding handling in RequestFactory
Moving cookie parsing out of the cookie plugin and into Guzzle\Http\Parser\Cookie\CookieParser
Removing regexps from the cookie parser and simply using stripos
Moving the parseQuery method out of Url and on to QueryString::fromString() as a static factory method.
Adding more logging to node.js test webserver
Adding pecl_http message parser.
Installing pecl when travis boots up
2012-05-13 01:23:32 -07:00
Michael Dowling
dd7c8b6b35 Lots of refactoring for *greatly* improved performance (4-5x faster)
[Http] cache.* parameters should be prefixed with 'params.' now.

Adding the ability to set arbitrary curl options that don't map to constants (disable_wire, progress, etc)

Added a check to the CurlMulti object that prevents sending a request when the curl multi resource has been destroyed.  This could possibly happen when issuing requests from a destructor.

Adding the ability to disable type validation of configuration options

Adding a cache for all requests owned by a curl multi object

Creating the polling event external to the main CurlMulti loop

Hardening the CurlMulti class so that curl handles that are finished sending are removed from the multi handle.  Adding validation test

[Common] BC: Simplifying Guzzle\Common\Collection so that it is more performant.

[Service] Adding the ability to disable validation on the Inpector class.  Disabling validation on first instantiating commands so that defaults are added but nothing is check until attempting to execute a command.

Using class properties instead of a Collection for ApiCommand

BC: Using a custom validation system that allows a flyweight
implementation for much faster validation. No longer using Symfony2
Validation component.
2012-05-06 19:08:28 -07:00
Michael Dowling
b1570da70c Fixing request parser so that lines are normalized. 2012-04-23 19:07:49 -07:00
Michael Dowling
c0dc85de35 Breaking / Potentially breaking changes:
1. Adopting a marker interface for Guzzle exceptions.
        A. All exceptions emitted from Guzzle are now wrapped with a Guzzle namespaced exception.
        B. Guzzle\Common\GuzzleExceptionInterface was renamed to Guzzle\Common\GuzzleException
        C. Guzzle\Common\ExceptionCollection was renamed to Guzzle\Common\Exception\ExceptionCollection
    2. Using Header objects for Request and Response objects
        A. When you call $request->getHeader('X'), you will get back a Guzzle\Http\Message\Header object that contains all of the headers that case insensitively match.  This object can be cast to a string or iterated like an array.  You can pass true in the second argument to retrieve the header as a string.
        B. Removing the old Guzzle\Common\Collection based searching arguments from most of the request and response header methods.  All retrievals are case-insensitive and return Header objects.
    3. Changing the two headers added by the cache plugin to just one header with key and ttl.
    4. Changing Guzzle\Http\Message\Response::factory() to fromMessage().
    5. Removing the NullObject return value from ServiceDescriptions and instead simply returning null

New Features / enhancements:

    1. Adding Guzzle\Http\Message\AbstractMessage::addHeaders()
    2. Making it simpler to create service descriptions using a unified factory method that delegates to other factories.
    3. Better handling of ports and hosts in Guzzle\Http\Url

Note: This is a noisy diff because I'm removing trailing whitespace and adding a new line at the end of each source file.
2012-04-22 00:17:49 -07:00
Michael Dowling
2be94b1981 [Http] Adding support for UTF-8 characters in query strings when parsing URLs 2012-04-20 00:31:07 -07:00
Michael Dowling
5ec879144d [Http] Using case insensitive matching by default when dealing with headers in HTTP messages.
Adding normalized behavior to Guzzle\Http\Message\AbstractMessage::getHeader() so that it returns an array of headers if multiple header values are found for a specific header key.  It will return a single string if only one header is found.
Updating curl handle to work with multiple headers per key
2012-04-19 16:14:58 -07:00
Michael Dowling
c990901dd3 [BC] Removing prepareRequest() from client interface and making it a protected method of the client
Adding a RequestFactoryInterface and a way to inject a request factory into a Client object
2012-03-26 21:16:19 -05:00
Michael Dowling
f619d8fa0e [Http] Fixing issue that caused two Content-Length headers. Adding better test coverage for Content-Length and chunked Transfer-Encoding. Removing some duplicate tests. 2012-01-25 11:02:08 -06:00
Michael Dowling
4c46e77015 Guzzle 2.0
Adopting composer for dependency management
Updating LICENSE, travis build file, making better use of git ignores, and remove unused build target
Removing @author tags.  Use the commit history for a changelog.
Moving files from build folder to /
Adding min build target to product a Guzzle only phar with no autoloader
[Common] Accepting ZF1 or ZF2 cache in ZendCacheAdapter
[Common] Optimizing Stream wrapper and EntityBody abstractions.
[Common] [Http] Migrating from Guzzle event system to the Symfony2 event dispatcher
[Common] Moved Inflector and Inspector to Service namespace
[Http] Simplifying Guzzle\Guzzle curl detection
[Http] Removing Guzzle\Http\Pool and now using Guzzle\Http\Curl\CurlMulti
[Http] The helper methods from Guzzle\Http\Message\RequestFactory have been removed to prevent confusion and encourage developers to use Guzzle\Http\Client to create requests.
[Http] Clients can now send one or more requests in an array using the send() method, so the batch() method was removed.
[Http] Updating curl multi to allow blocking calls while sending other transfers
[Http] Making the Request::hasHeader method more intuitive.  Guzzle\Http\Message\AbstractMessage::hasHeader() now returns true if the header is found using exact matching.  If the header is found using a regex or case-insensitive match, then it will return the name of the found header.
[Http] Removing content-type guessing from EntityBody based on file extension and solely using finfo.
[Http] Adding basic auth plugin
[Http] Cleaning up CookieJar and CurlMulti
[Http] Removing custom rawurlencode from QueryString because PHP 5.3 now properly deals with tilde characters.
[Http] Minor optimization to parsing messages in RequestFactory
[Http] Adding Guzzle\Http\Client for developers that don't need commands or service descriptions
[Http] Making it easier to set a global User-Agent header for a Guzzle\Http\Client
[Http] Fixing the discrepancies between the ClientInterface and Guzzle\Http\Client
[Http] Adding the ability to set and retrieve tokenized headers from Requests and Responses
[Service] Ditching NIH filters and using the Symfony2 validator
[Service] Moving most service building logic to the ServiceBuilder::factory method so that it is easier to build custom config readers.
[Service] Allowing deep nested command inheritance.
[Service] Cleaning up Inflector caching.
[Service] Getting rid of concept of can_batch because everything is now sent in parallel.
[Service] Adding a JSON description builder.
[Service] Cleaning up ResourceIteratorApplyBatched.
[Service] Removing caching stuff from ServiceBuilder because the data being cached is extremely fast to generate.
[Service] Added a method to serialize the ServiceDescription in case a ServiceDescription needs to be cached in an application.
[Service] Making description builders use static methods.
[Service] Adding support to include other description files for XML and JSON description builders.
[Service] Adding support for filters to ApiCommands
[Service] Using {{}} instead of $. to reference other services as a dependency for another service
2012-01-14 13:57:05 -06:00
Michael Dowling
503c16668e [Tests] Adding `@server annotation to tests that require access to the node.js server. If you cannot install node.js, use phpunit --exclude-group server` to run the other tests. 2011-11-12 19:31:00 -06:00
Michael Dowling
a7ae469671 Removing verbose docblock headers from every class 2011-07-07 17:17:28 -05:00
Michael Dowling
05d4f1038b [Http] [Tests] Removing deprecated assertType calls in tests. Moving Guzzle\Http\Server related code to Guzzle\Tests\Http as it is not used for anything but testing. 2011-04-13 19:33:48 -05:00
Michael Dowling
f53d169978 [Http] [Service] Better handling in the RequestFactory to generate entity enclosing requests using various body variable types. Passing an API command to a concrete command class when working with service descriptions. Adding more tests. 2011-03-22 11:23:06 -05:00
Michael Dowling
f236e8080d [Http] [Service] Adding better support for OPTIONS requests and determining if a method is allowed on a resource 2011-03-15 20:09:25 -05:00
Michael Dowling
9844615293 [Http] Allowing Guzzle\Http\Url to build relative URLs. Adding the ability to combine URLs, check if a URL is absolute, and add to the already set path of a URL.
[Service] Allowing simpler Guzzle\Service\Client objects to be created (removing the requirement of a ServiceDescription and CommandFactory).  Allowing the first argument of the clientss constructor to be an array or collection of config data, or, when a string is used, be just the base url of the web service.  Adding get, head, delete, put, and post helper methods to the client, and adding support for Spring-like REST templates for clients.  Clients can now create requests that extends the base URL of the client.
2011-03-13 18:37:02 -05:00
Michael Dowling
8c5bef47b1 [Http] [Service] Making the default request factory use static methods. Adding common HTTP method helper methods to the request factory. Renaming Client::getRequest() to Client::createRequest(). Renaming some methods of the RequestFactory. Changing the interface of Client::createRequest() to use a string or array and proxy calls to the default request factory. The createRequest method can be overridden in sub-classes if you need to use custom request objects. 2011-03-11 13:52:26 -06:00
Michael Dowling
d8a1277c69 Guzzle - PHP framework for building REST webservice clients 2011-02-27 22:32:13 -06:00