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

196 Commits

Author SHA1 Message Date
Michael Dowling
687b04caff [Service] Moving magic method call behavior constants to Guzzle\Service\ClientInterface. Adding magic method call behvaior to Guzzle\Service\Command\AbstractCommand similar to the magic method call behavior of Client objects. When magic method calls are enabled on a client object, they become enabled on commands created by the client. $command->setFoo("x") is the same as $command->set("foo", "x") when magic method calls are enabled. 2012-05-01 10:51:42 -07:00
Michael Dowling
ac0d806613 [Http] Making it so that if a custom callback function used to determine if a request should be retried using exponential backoff returns null that the exponential backoff plugin will do the default checks to see if a request should be retried. 2012-04-25 14:15:38 -07:00
Gordon Franke
ee4529d4b6 add test for invalid json response 2012-04-25 08:51:23 +02:00
Michael Dowling
19566ce334 [Http] Adding the ability to pass shared parameters to all requests created by a client by prefixing a configuration property with 'params.'
Moving cURL transfer stderr logic from the CurlMulti class and on to the CurlHandle class
Adding a fix for 'too many open files' that will allow the proper exception to be thrown when this occurs by ensuring that the exception is autoloaded before you run into the issue.
Cleaning up some CurlMulti error checking and adding the ability to allow a request to continue to be sent even after a curl transfer error occurs.
Adding the option to pass in a callable function to the ExponentialBackoffPlugin that determines whether or not a request failed and should be retried.  Adding a method to return a default array of failure codes and curl error numbers.
Adding the ability to retry specific curl handle transfer errors with the ExponentialBackoffPlugin
2012-04-24 18:22:20 -07:00
Michael Dowling
b1570da70c Fixing request parser so that lines are normalized. 2012-04-23 19:07:49 -07:00
Michael Dowling
f5ee3fb453 [Http] Ensuring that cURL blacklisted headers are never set even if they are set by the user.
[Http] Error responses are now never written to the intended response stream of a request, but rather to a temporary stream.  This helps when retrying failed requests so that the intended stream is not polluted with transient errors.
[Http] Adding the ability to retry failed requests with the exponential backoff plugin by checking both the status code and reason phrase.
[Service] Simplifying the loop in Guzzle\Service\Command\DynamicCommand
2012-04-23 17:54:02 -07:00
Michael Dowling
5e58f4bf05 [Http] Adding a mediator object between curl and requests. This should speed up curl requests due to reduction in anonymous function creation.
[Http] Using a factory method when creating bad response exceptions.  Adding ClientErrorResponseException and ServerErrorResponseException.
[Http] Removing curl specific protocal version code from RequestInterace and pushing it to the curl namespace
[Http] Renaming parseUrlUtf8 to parseUrl and fixing a typo
2012-04-22 14:23:23 -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
cbf125fd0f [Service] Using the Serializable interface on Guzzle\Service\ServiceBuilder. Closes #41 2012-04-20 21:47:03 -07:00
Michael Dowling
72a86e86c9 Fixing broken Inspector tests 2012-04-20 17:30:39 -07:00
Michael Dowling
668ef3fe35 Renaming black_list to blacklist 2012-04-20 17:22:15 -07:00
Michael Dowling
503df1835f [Http] Correcting the version reported in the User-Agent header. Shortening the User-Agent header.
Adding a way to black list cURL options and cURL specific headers from being set or sent over the wire.
2012-04-20 17:18:21 -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
c1b29eb062 [Http] Adding the ability to retrieve a URL object from a request. Adding a method to normalize relative paths in URLs. 2012-04-19 21:47:24 -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
a8089fdc5e [Common] Adding a "cache." prefix to cache settings 2012-04-18 17:16:39 -07:00
Michael Dowling
6191c4f766 [Common] Adding a CacheAdapterFactory so that you can generate cache adapters in your service config files 2012-04-18 16:56:58 -07:00
Michael Dowling
04d858044a [Http] Adding much more error handling to CurlMulti and providing informative error messages 2012-04-18 11:10:38 -07:00
Michael Dowling
b1beeb68d8 One more time trying to fix the timeout test... 2012-04-17 17:48:55 -07:00
Michael Dowling
8ce1fbed17 Fixing CurlHandleTest to timeout more consistently 2012-04-16 12:37:40 -07:00
Michael Dowling
02f9785f93 [Service] Adding an AliasFactory for aliasing one command name to another. Updating README for new composer setup. Making the build script more generalized. 2012-04-15 12:00:12 -07:00
Michael Dowling
d29e7f3bba [Service] Adding command factories to Guzzle\Service\Client. Gives the ability to add custom handling for associating command names with concrete classes.
Removing command factories from Guzzle\Service\Description\ServiceDescription.  Use Guzzle\Service\Command\Factory\ServiceDescriptionFactory instead.
Setting a service description on a client will update any attached service description factories.
2012-04-15 00:07:45 -07:00
Michael Dowling
eabe684b22 [Common] [BC] Renaming ZendLogAdapter to Zf1LogAdater. Adding a Zf2LogAdapter. Renaming ZendCacheAdapter to Zf1CacheAdapter. Adding Zf2CacheAdapter to support Zend Framework 2 caching.
Updating the cache interface to allow passing options to cache methods.
Removing the constructor and removing getCachedObject from CacheAdapterInterface.
Adding a ClosureCacheAdapter.
[Service] Adding the ability to use magic call method behavior for executing commands by name.  Closes #39.
[Tests] Fixing a logging unit test so that it does not spit out to stdout
Separating test dependencies from Guzzle deps by adding a composer-test.json.
Adding unit testing capabilities to the Guzzle phar files.
Updating travis-ci script to use new composer file and adding code coverage to travis runs
[Build] Fixing guzzle-min.phar warning that tried to load index.php
Adding a test-init phing target to help getting setup for testing.
Fixing composer run in travis
2012-04-14 18:49:51 -07:00
Michael Dowling
5ad66ff4d1 [Http] Adding the ability to disable the Expect: 100-Continue header from being sent. Simply remove the "Expect" header from a request before sending. You can remove the Expect header from all requests sent from a client by adding an event listener to a client. Closes #35.
Adding the ability to set HTTP request headers to NULL so that they are still passed to curl.  This is useful for removing some default curl headers.  Empty headers are still not sent to curl.

Not setting "Expect: 100-Continue" when sending with application/x-www-form-urlencoded POST requests
2012-04-02 17:27:37 -05:00
Michael Dowling
729b346685 Fixing .travis.yml
Commenting out PATCH test that is not working on travis
2012-03-26 23:01:18 -05: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
85803bdd05 Adding the ability to set default HTTP headers that will be set on all requests created by a client. Closes #37. 2012-03-25 22:23:47 -05:00
Michael Dowling
bc3acaf817 Allowing deeply nested query string values with PHP style aggregation. Closes #27 2012-03-24 17:10:20 -05:00
Michael Dowling
4a0cb15350 [Http] Removing final keyword from client verb methods
Adding PATCH method
Fixing docblock for PUT method
Updating request message parsing to allow for custom verbs
Adding a Content-Length: 0 header when sending an entity enclosing request with no body or post fields.  Closes #34
2012-03-19 22:03:41 -05:00
Michael Dowling
46d50a577c CS updates 2012-03-06 11:13:16 -06:00
Chris Boden
b44740bfed [Http][Tests] Serialization test
TDD for ArrayCookieJar serialization
2012-03-06 11:06:06 -05:00
Julian Higman
37e7e7d6ba Fixed up some indents - spaces instead of tabs. 2012-03-01 21:54:01 +00:00
Julian Higman
55796569dd Added CurlAuthPlugin as a generic plugin for curl auth methods. Removed
BasicAuthPlugin and DigestAuthPlugin.
2012-03-01 11:11:36 +00:00
Julian Higman
e2eb6140bc Added DigestAuthPlugin, based heavily on the BasicAuthPlugin. 2012-02-29 12:25:57 +00:00
Michael Dowling
4227abdf0b [Http] Using cookies.disable on a params object to disable the cookie plugin for a specific request 2012-02-22 21:47:02 -06:00
Michael Dowling
6edccc2db8 [Http] Fixing issue related to nested POST data. Resolves #20 2012-02-13 20:28:33 -06:00
Michael Dowling
f3a5b01236 [Http] Allowing mutliple query string parameters to be used by the same name when using the aggregateUsingDuplicates aggregation function. Addresses #22. 2012-02-13 20:16:32 -06:00
Michael Dowling
41246dfd29 [Http] Parsing query strings manually to allow for multiple values per query string and to not convert decimals and spaces into underscores. Resolves #21 2012-02-13 19:57:47 -06:00
Michael Dowling
b9c04909c7 Adding support for URI templates
[Http] UriTemplate syntax supports {} or {{}} for backwards compatibility.
[Http] Guzzle::inject() now allows {} or {{}} injection for consistency.
[Http] BC: removing Guzzle\Http\Client::inject and now using Guzzle\Http\Client::expandTemplate.
[Http] Can use a custom syntax for URI templates (this might be useful for something like Solr because Solr actually uses {}).
[Http] Adding the ability to inject a custom UriTemplate into clients or just use the default UriTemplate
[Http] You can now use an array when creating a request via a client to specify a URI template and additional template variables.
[Service] Adding support for URI templates to service descriptions.
[Service] [BC] removing Guzzle\Service\Description\ApiCommand::getPath() and replacing it with getUri().
[Service] Use "uri" instead of "path" when creating service descriptions.  However, there is still backwards compatibility with the "path" attribute.
2012-02-07 23:23:39 -06:00
Michael Dowling
2ca59100ff Fixing broken test 2012-01-27 10:42:37 -06:00
Michael Dowling
32b1944eba [Common] Fixing monolog log adapter log levels. Adding a check to CurlHandleTest to ensure that the body of a request is sent in a chunked PUT request. 2012-01-27 01:47:59 -06:00
Michael Dowling
eb79d98009 [Http] Adding helper DSL to compare filtered HTTP headers with actual HTTP headers.
Adding more coverage to CurlHandle so that the actual HTTP requests being sent are being checked.
Fixing EntityEnclosingRequests so that the Content-Type is not removed when setting the body of a request.
This allows a custom Content-Type to be specified in a factory method.
2012-01-25 22:38:17 -06:00
Michael Dowling
9a9ae3b6be [Http] Using CURLOPT_INFILESIZE instead of Content-Length headers. This prevents chunked transfer encoding when the Content-Length is known. Adding better test coverage. 2012-01-25 11:26:25 -06: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
f92c049df5 Moving the onComplete handling of Guzzle\Http\Message\RequestInterface to the Symfony EventDispatcher. Subscribe to the request.error event to imlpement your custom error handling. Use $event->stopPropagation() to override the default error handling for unsuccessful responses. request.success is now called any time a request completes successfully. 2012-01-23 18:50:02 -06:00
Michael Dowling
109bad53d3 [Http] Adding OAuth 1.0 signature plugin 2012-01-22 17:48:25 -06:00
Michael Dowling
2986444944 [Service] Fixing headers set using an array on commands via the constructor
Removing special handling of ClosureCommand
Throwing an exception when required parameters are missing from a dynamic command
Pass ApiCommand objects to a ClosureCommand in the second argument of the constructor, not in the api_command parameter key
Adding Guzzle\Service\Command\DynamicCommand that will prepare HTTP requests based on an API command. Extend this class for advanced response processing for API commands.
Making DynamicCommand the default command for ApiCommands
Removing the old DynamicCommandFactory and replacing with a simpler ApiCommandFactory
2012-01-21 19:08:15 -06:00
Michael Dowling
7fdae5b984 [Service] Automatically converting command results with an application/json Content-Type to an array 2012-01-20 16:58:30 -06:00
Michael Dowling
829d8ae178 Fixing the cache.revalidate parameter 2012-01-20 00:28:15 -06:00
Michael Dowling
8aee7da90c [Http] Adding check in CurlMulti to ensure that a request handle exists before operating on it. \
Adding fix so that when a revalidation response returns a 200 response and the response is cacheable, the cached data uses the maximum age of the new response (not the default ttl) \
Adding fix so that when a revalidation response contains updated caching headers, the cached response data is updated \
Added fix so that when a revalidation response is a 404, the cached data is deleted and the 404 exception is thrown \
Renaming the ``cache.revalidate`` options that can be set in the params of a request from "accept" => "never" and "decline" => "always"
2012-01-19 23:43:25 -06:00