Commit Graph

557 Commits

Author SHA1 Message Date
Tobias Schultze
c950130fc2 Merge branch '4.3' into 4.4 2019-10-25 15:41:20 +02:00
Nicolas Grekas
0fc371e7df [HttpClient] ignore the body of responses to HEAD requests 2019-10-25 15:08:37 +02:00
Nicolas Grekas
c5024bdbd0 feature #34051 [HttpClient] allow option "buffer" to be a stream resource (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpClient] allow option "buffer" to be a stream resource

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Commits
-------

e87301603e [HttpClient] allow option "buffer" to be a stream resource
2019-10-24 15:27:54 +02:00
Nicolas Grekas
76776943cd Merge branch '4.4'
* 4.4:
  [Debug] remove return types that break FC badly
  [Mailer][MailchimpBridge] Don't send address names if empty string
  [ExpressionLanguage][Lexer] Exponential format for number
  [Mailer] Fix SES Message Id retrieval
  Add .gitignore to .gitattributes
2019-10-22 19:21:12 +02:00
Fabien Potencier
f00390ffd7 minor #33963 Add .gitignore to .gitattributes (reedy)
This PR was merged into the 4.4 branch.

Discussion
----------

Add .gitignore to .gitattributes

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | #33946
| License       | MIT

Commits
-------

246c5fdf43 Add .gitignore to .gitattributes
2019-10-22 17:44:54 +02:00
Nicolas Grekas
077f7be805 Merge branch '4.4'
* 4.4:
  [Console] Revert wrong change
  [HttpClient] Add a canceled state to the ResponseInterface
  Fix small typo in Exception message
  Restrict secrets management to sodium+filesystem
  Add secrets management
  Proof of concept for encrypted secrets
2019-10-22 08:33:15 +02:00
Nicolas Grekas
ae86ab18fa [HttpClient] skip tests implemented in 4.4 2019-10-21 18:09:12 +02:00
Nicolas Grekas
e87301603e [HttpClient] allow option "buffer" to be a stream resource 2019-10-21 18:05:25 +02:00
Yanick Witschi
bbb8ed11ff [HttpClient] Add a canceled state to the ResponseInterface 2019-10-21 17:46:23 +02:00
Nicolas Grekas
99098f8662 Merge branch '4.4'
* 4.4:
  [DI] add `LazyString` for lazy computation of string values injected into services
  [Dotenv] allow LF in single-quoted strings
  Replace STDIN by php://stdin
  [Yaml] Throw exception for tagged invalid inline elements
  [Mailer] Fix Mandrill Transport API payload with named addresses
  [HttpClient] improve StreamWrapper
2019-10-18 16:28:29 +02:00
Nicolas Grekas
ea52d1cea2 [HttpClient] improve StreamWrapper 2019-10-15 17:38:24 +02:00
Nicolas Grekas
d5184284a5 Merge branch '4.4'
* 4.4:
  extend legacy exception for backwards compatibility
  [HttpClient] workaround curl_multi_select() issue
  [CI] fix building local packages
  Add show-deprecations option to lint:twig command
  [HttpClient] try using php-http/discovery when nyholm/psr7 is not installed
  [FrameworkBundle] Improve the sorting of tagged services
  [HttpClient] add HttpClient::createForBaseUri()
  Increase limits for flakey appveyor tests
2019-10-15 15:30:26 +02:00
Nicolas Grekas
3723d03663 Merge branch '4.3' into 4.4
* 4.3:
  [HttpClient] workaround curl_multi_select() issue
  [CI] fix building local packages
  Increase limits for flakey appveyor tests
2019-10-15 14:38:35 +02:00
Nicolas Grekas
e635491c96 [HttpClient] workaround curl_multi_select() issue 2019-10-15 14:30:03 +02:00
Nicolas Grekas
46e94d9425 feature #33973 [HttpClient] add HttpClient::createForBaseUri() (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpClient] add HttpClient::createForBaseUri()

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

I've seen ppl use `HttpClient::create()` with default `base_uri` & `auth_bearer`. That's a security risk as the bearer would be sent to any hosts that the client requests.

Instead, ppl should use `ScopingHttpClient`.

The new method should help to discover and use it.

Commits
-------

1aa9a118d6 [HttpClient] add HttpClient::createForBaseUri()
2019-10-14 16:15:04 +02:00
Nicolas Grekas
85c106558d feature #33980 [HttpClient] try using php-http/discovery when nyholm/psr7 is not installed (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpClient] try using php-http/discovery when nyholm/psr7 is not installed

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

In case one has `php-http/discovery`, we can leverage it...

Commits
-------

6e0cb581a1 [HttpClient] try using php-http/discovery when nyholm/psr7 is not installed
2019-10-14 15:04:42 +02:00
Christian Flothmann
006c09a4da Merge branch '4.4'
* 4.4:
  fix PHP 5.6 compatibility
  [Cache] fixed TagAwareAdapter returning invalid cache
  Add plus character `+` to legal mime subtype
  Make Symfony\Contracts\Service\Test\ServiceLocatorTest abstract
  bug #33942 [DI] Add extra type check to php dumper
  [Dotenv] search variable values in ENV first then env file
  [PropertyInfo] Respect property name case when guessing from public method name
  [VarDumper] fix resetting the "bold" state in CliDumper
  Missing argument in method_exists
  SCA: added missing break in a loop
2019-10-14 14:37:23 +02:00
Christian Flothmann
ae808b0a74 Merge branch '4.3' into 4.4
* 4.3:
  fix PHP 5.6 compatibility
  [Cache] fixed TagAwareAdapter returning invalid cache
  Add plus character `+` to legal mime subtype
  Make Symfony\Contracts\Service\Test\ServiceLocatorTest abstract
  bug #33942 [DI] Add extra type check to php dumper
  [Dotenv] search variable values in ENV first then env file
  [PropertyInfo] Respect property name case when guessing from public method name
  [VarDumper] fix resetting the "bold" state in CliDumper
  Missing argument in method_exists
  SCA: added missing break in a loop
2019-10-14 14:27:06 +02:00
Nicolas Grekas
ae7803d543 Merge branch '4.4'
* 4.4:
  [Serializer] fix typo
  Add context options to handle BOM
  [Mailer] Fix Message ID for Postmark SMTP
  [HttpClient] resolve promise chains on HttplugClient::wait()
  Add Message-Id to SentMessage when sending an email
  [Cache] fix 2RTT + race condition in AbstractTagAwareAdapter::deleteItems()
  [Mailer] added ReplyTo option for PostmarkApiTransport
2019-10-14 13:46:27 +02:00
Nicolas Grekas
6e0cb581a1 [HttpClient] try using php-http/discovery when nyholm/psr7 is not installed 2019-10-14 12:53:45 +02:00
Nicolas Grekas
1aa9a118d6 [HttpClient] add HttpClient::createForBaseUri() 2019-10-13 19:52:56 +02:00
Nicolas Grekas
ea0be07a33 [HttpClient] resolve promise chains on HttplugClient::wait() 2019-10-12 10:50:39 +02:00
Reedy
246c5fdf43 Add .gitignore to .gitattributes 2019-10-12 01:35:04 +01:00
Tobias Schultze
a306d99297 Merge branch '4.4' 2019-10-11 16:48:48 +02:00
Nicolas Grekas
6e7f3257ce [HttpClient] fix merge 2019-10-10 10:55:24 +02:00
detinkin
d2a8e94c79 Missing argument in method_exists 2019-10-10 10:41:55 +02:00
Nicolas Grekas
f93b3a3653 Merge branch '4.3' into 4.4
* 4.3:
  [Cache] ignore unserialization failures in AbstractTagAwareAdapter::doDelete()
  [HttpClient] send `Accept: */*` by default, fix removing it when needed
2019-10-10 09:38:51 +02:00
Nicolas Grekas
aff4e56fc5 [HttpClient] send Accept: */* by default, fix removing it when needed 2019-10-09 18:19:03 +02:00
Nicolas Grekas
4e5c6ba0d3 Merge branch '4.4'
* 4.4:
  [travis] Fix build-packages script
  Add types to constructors and private/final/internal methods (Batch III)
  [HttpClient] Async HTTPlug client
  [Messenger] Allow to configure the db index on Redis transport
  [HttpClient] bugfix exploding values of headers
  [VarDumper] Made all casters final
  [VarDumper] Added a support for casting Ramsey/Uuid
  Remove useless testCanCheckIfTerminalIsInteractive test case
  [Validator] Add the missing translations for the Thai (\"th\") locale
  [Routing] gracefully handle docref_root ini setting
  [Validator] Fix ValidValidator group cascading usage
2019-10-07 14:45:39 +02:00
Nicolas Grekas
bf406da78f Merge branch '4.3' into 4.4
* 4.3:
  [travis] Fix build-packages script
  [HttpClient] bugfix exploding values of headers
  Remove useless testCanCheckIfTerminalIsInteractive test case
  [Validator] Add the missing translations for the Thai (\"th\") locale
  [Routing] gracefully handle docref_root ini setting
  [Validator] Fix ValidValidator group cascading usage
2019-10-07 14:37:47 +02:00
Nicolas Grekas
199881477e feature #33743 [HttpClient] Async HTTPlug client (Nyholm)
This PR was squashed before being merged into the 4.4 branch (closes #33743).

Discussion
----------

[HttpClient] Async HTTPlug client

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #33710, Fix #32142
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/12389

This PR removes `HttplugClient`'s dependency on `Psr18Client`. It will also add an `HttplugPromise` to make sure we sure we respect the Httplug's `HttpAsyncClient` interface.

It implements `HttpAsyncClient::sendAsyncRequest()` and provides two extensions:
- `HttplugPromise::cancel()` allows cancelling a promise (and the underlying response)
- `HttplugClient::wait()` allows to tick the promise pool, with configurable timeouts.

Commits
-------

4fd593f869 [HttpClient] Async HTTPlug client
2019-10-07 13:22:04 +02:00
Nyholm
4fd593f869 [HttpClient] Async HTTPlug client 2019-10-07 13:21:57 +02:00
Nicolas Grekas
bee005687a bug #33871 [HttpClient] bugfix exploding values of headers (michaljusiega)
This PR was squashed before being merged into the 4.3 branch (closes #33871).

Discussion
----------

[HttpClient] bugfix exploding values of headers

| Q             | A
| ------------- | ---
| Branch?       | 4.3 for bug fixes
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

I tried to use CachingHttpClient yesterday and I received an error.

```
explode() expects parameter 2 to be string, array given
 C:\PROJEKTY\PHPStorm\symfony\src\Symfony\Component\HttpClient\HttpClientTrait.php:200
 C:\PROJEKTY\PHPStorm\symfony\src\Symfony\Component\HttpClient\HttpClientTrait.php:131
 C:\PROJEKTY\PHPStorm\symfony\src\Symfony\Component\HttpClient\HttpClientTrait.php:45
 C:\PROJEKTY\PHPStorm\symfony\src\Symfony\Component\HttpClient\CurlHttpClient.php:105
 C:\PROJEKTY\PHPStorm\symfony\src\Symfony\Component\HttpKernel\HttpClientKernel.php:54
 C:\PROJEKTY\PHPStorm\symfony\src\Symfony\Component\HttpKernel\HttpCache\SubRequestHandler.php:85
 C:\PROJEKTY\PHPStorm\symfony\src\Symfony\Component\HttpKernel\HttpCache\HttpCache.php:477
 C:\PROJEKTY\PHPStorm\symfony\src\Symfony\Component\HttpKernel\HttpCache\HttpCache.php:450
 C:\PROJEKTY\PHPStorm\symfony\src\Symfony\Component\HttpKernel\HttpCache\HttpCache.php:347
 C:\PROJEKTY\PHPStorm\symfony\src\Symfony\Component\HttpKernel\HttpCache\HttpCache.php:222
 C:\PROJEKTY\PHPStorm\symfony\src\Symfony\Component\HttpClient\CachingHttpClient.php:96
 C:\PROJEKTY\PHPStorm\symfony\src\Symfony\Component\HttpClient\Tests\CachingHttpClientTest.php:34

```
This PR fix this.

Commits
-------

5cd8895c67 [HttpClient] bugfix exploding values of headers
2019-10-07 12:52:41 +02:00
Michał Jusięga
5cd8895c67 [HttpClient] bugfix exploding values of headers 2019-10-07 12:52:05 +02:00
Nicolas Grekas
e3e502ef6f Merge branch '4.4'
* 4.4: (27 commits)
  [Validator] add notice in UPGRADE file for new Range constraint option
  [CssSelector] Support *:only-of-type pseudo class selector
  [Intl] Update the ICU data to 65.1 (4.4 branch)
  [Intl] Update the ICU data to 65.1 (4.3 branch)
  Replace deprecated calls in tests
  [Intl] Update the ICU data to 65.1
  Delete 5_Security_issue.md
  [DI] Whitelist error_renderer.renderer tag  in UnusedTagsPass
  [DI] Whitelist validator.auto_mapper in UnusedTagsPass
  Update CHANGELOG.md
  [HttpClient] Fixed #33832 NO_PROXY option ignored in NativeHttpClient::request() method
  [EventDispatcher] A compiler pass for aliased userland events.
  [Cache] give 100ms before starting the expiration countdown
  [Cache] fix logger usage in CacheTrait::doGet()
  [VarDumper] fix dumping uninitialized SplFileInfo
  Added missing translations.
  [Form] Added CountryType option for using alpha3 country codes
  Fixed invalid changelog 4.0.0 for VarDumper
  [Workflow] Fixed BC break on WorkflowInterface
  Fix wrong expression language value
  ...
2019-10-07 11:06:09 +02:00
Nicolas Grekas
2044ba8e97 Merge branch '4.3' into 4.4
* 4.3:
  [Intl] Update the ICU data to 65.1 (4.3 branch)
  Replace deprecated calls in tests
  [Intl] Update the ICU data to 65.1
  Delete 5_Security_issue.md
  [DI] Whitelist validator.auto_mapper in UnusedTagsPass
  [HttpClient] Fixed #33832 NO_PROXY option ignored in NativeHttpClient::request() method
  [Cache] give 100ms before starting the expiration countdown
  [Cache] fix logger usage in CacheTrait::doGet()
  [VarDumper] fix dumping uninitialized SplFileInfo
  Added missing translations.
  Fixed invalid changelog 4.0.0 for VarDumper
  Fixed invalid VarDumper upgrade doc.
  [HttpFoundation] Check if data passed to SessionBagProxy::initialize is an array
  Don't let falsey usernames slip through
2019-10-04 23:43:27 +02:00
Eric Grimois
e4fb58d1b8 [HttpClient] Fixed #33832 NO_PROXY option ignored in NativeHttpClient::request() method 2019-10-04 17:43:55 +02:00
Alexander M. Turek
9378eb4858 Add types to constructors and private/final/internal methods (Batch II) 2019-10-03 13:24:03 +02:00
Nicolas Grekas
8f1c4f1f86 Merge branch '4.4'
* 4.4: (28 commits)
  [FrameworkBundle] Fix framework bundle lock configuration not working as expected
  [Validator] Add the missing translations for the Azerbaijani locale
  [HttpClient] workaround bad Content-Length sent by old libcurl
  [Cache] dont override native Memcached options
  Fix CS
  Fix exceptions (PDOException) error code type
  [ErrorHandler] fix return-type patching logic
  [Messenger] Added support for `from_transport` attribute on `messenger.message_handler` tag
  [ErrorHandler] don't throw deprecations for return-types by default
  ensure legacy event dispatcher compatibility
  ensure legacy event dispatcher compatibility
  Fix return type of Process::restart().
  [Cache] fail gracefully when locking is not supported
  [HttpKernel] compress files generated by the profiler
  tweak deprecation messages and changelog
  fix version in @deprecated annotation
  Use VarCloner data instead of legacy array for query params
  [Security] use LegacyEventDispatcherProxy
  [HttpClient] fix undefined index access
  [HttpClient] fix race condition when reading response with informational status
  ...
2019-09-27 00:15:24 +02:00
Nicolas Grekas
fc78e200db Merge branch '4.3' into 4.4
* 4.3:
  [FrameworkBundle] Fix framework bundle lock configuration not working as expected
  [Validator] Add the missing translations for the Azerbaijani locale
  [HttpClient] workaround bad Content-Length sent by old libcurl
  [Cache] dont override native Memcached options
  Fix CS
  Fix exceptions (PDOException) error code type
  Fix return type of Process::restart().
  [Cache] fail gracefully when locking is not supported
  [HttpClient] fix race condition when reading response with informational status
  Names for buttons should start with lowercase
2019-09-27 00:09:58 +02:00
Nicolas Grekas
dff71cef48 bug #33691 [HttpClient] fix race condition when reading response with informational status (nicolas-grekas)
This PR was merged into the 4.3 branch.

Discussion
----------

[HttpClient] fix race condition when reading response with informational status

| Q             | A
| ------------- | ---
| Branch?       | 4.3
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Spotted by some transiently failing jobs on Travis.

Commits
-------

450c3c4998 [HttpClient] fix race condition when reading response with informational status
2019-09-26 23:20:52 +02:00
Nicolas Grekas
b8d2496979 [HttpClient] workaround bad Content-Length sent by old libcurl 2019-09-26 21:42:07 +02:00
Nicolas Grekas
7fce184d25 [HttpClient] fix undefined index access 2019-09-24 20:17:30 +02:00
Nicolas Grekas
450c3c4998 [HttpClient] fix race condition when reading response with informational status 2019-09-24 20:09:31 +02:00
Nicolas Grekas
b320c44b4e Merge branch '4.4'
* 4.4:
  [HttpKernel] fix merge
  fix tests
  [HttpClient] fix throwing HTTP exceptions when the 1st chunk is emitted
2019-09-20 11:29:01 +02:00
Nicolas Grekas
bbf2ae576e Merge branch '4.3' into 4.4
* 4.3:
  [HttpKernel] fix merge
  fix tests
  [HttpClient] fix throwing HTTP exceptions when the 1st chunk is emitted
2019-09-20 11:28:18 +02:00
Nicolas Grekas
3c93764f10 [HttpClient] fix throwing HTTP exceptions when the 1st chunk is emitted 2019-09-19 20:56:12 +02:00
Fabien Potencier
5d5881a9b4 Merge branch '4.4'
* 4.4:
  [Twig] Remove dead code
  Minor updates in the new Welcome page
  Add gitignore file for Symfony 4.3
  Add gitignore file for Symfony 3.4
  [Inflector] Add .gitignore file
  [Messenger] Fix exception message of failed message is dropped on retry
  Add default value for Accept header
  [HttpClient] Add .gitignore file
  [Finder] Adjust regex to correctly match comments in gitignore contents
  [Security] Removed unused argument in Test
  [Console] Get dimensions from stty on windows if possible
  [Inflector] add support 'see' to 'ee' for singularize 'fees' to 'fee'
2019-09-17 13:12:43 +02:00
Fabien Potencier
3c78fde548 Merge branch '4.3' into 4.4
* 4.3:
  [Twig] Remove dead code
  Add gitignore file for Symfony 4.3
  Add gitignore file for Symfony 3.4
  [Inflector] Add .gitignore file
  [Messenger] Fix exception message of failed message is dropped on retry
  Add default value for Accept header
  [HttpClient] Add .gitignore file
  [Finder] Adjust regex to correctly match comments in gitignore contents
  [Security] Removed unused argument in Test
  [Console] Get dimensions from stty on windows if possible
  [Inflector] add support 'see' to 'ee' for singularize 'fees' to 'fee'
2019-09-17 13:12:18 +02:00
geoffrey
48eebfc77b Add default value for Accept header 2019-09-16 21:57:32 +02:00
Valentine Boineau
a2868f12a6 [HttpClient] Add .gitignore file 2019-09-16 14:30:38 +02:00
Fabien Potencier
21d9320be2 Merge branch '4.4'
* 4.4:
  Adding .gitattributes to remove Tests directory from "dist"
  [Messenger] Don't deep merge routing.senders config option
2019-09-16 10:16:50 +02:00
Nyholm
ac7dc24bcb Adding .gitattributes to remove Tests directory from "dist" 2019-09-16 10:12:51 +02:00
Nicolas Grekas
ee94e8595c Merge branch '4.4'
* 4.4:
  Re-enable push support for HttpClient
  [DependencyInjection] Accept existing interfaces as valid named args
  Fixed incompatibility between ServiceSubscriberTrait and classes with protected $container property
  [Cache] Added reserved characters constant for CacheItem
  [DI] cascade preloading only to public parameters/properties
  Move Anonymous config to a SecurityFactory
2019-09-11 10:39:10 +02:00
Nicolas Grekas
789448b65c Merge branch '4.3' into 4.4
* 4.3:
  Re-enable push support for HttpClient
  [DependencyInjection] Accept existing interfaces as valid named args
  Fixed incompatibility between ServiceSubscriberTrait and classes with protected $container property
2019-09-11 10:38:59 +02:00
Kévin Dunglas
8483842888
Re-enable push support for HttpClient 2019-09-11 09:53:13 +02:00
Nicolas Grekas
70963e390b Merge branch '4.4'
* 4.4:
  Update GitHub PR template
  [DI] fix related to preloading
  [HttpKernel] fix compat with legacy DebugClassLoader
  [WebProfilerBundle] Assign automatic colors to custom Stopwatch categories
  [DI] use dirname() when possible
  Simplify usage of dirname()
  Remove Google references when not needed
  Simplify usage of dirname()
  don't dump a scalar tag value on its own line
  Remove Google references when not needed
  [DI] fix Preloader
  [HttpClient] fix calling the buffer-enabling callback
  [HttpClient] fix php notice on push
  do not perform string operations on null
  Require exact match when reading from stdin with a dash
2019-09-10 19:00:13 +02:00
Nicolas Grekas
0e28518b33 [HttpClient] fix calling the buffer-enabling callback 2019-09-10 10:51:24 +02:00
Nicolas Grekas
6a7b77ecb2 [HttpClient] fix php notice on push 2019-09-10 08:36:23 +02:00
Christian Flothmann
600bde9562 do not perform string operations on null 2019-09-09 12:09:16 +02:00
Nicolas Grekas
41b9d81292 Merge branch '4.4'
* 4.4:
  [Cache] Add types to constructors and private/final/internal methods.
  [HttpClient] Allow enabling buffering conditionally with a Closure
2019-09-09 09:35:34 +02:00
Nicolas Grekas
e9f524a37e feature #32565 [HttpClient] Allow enabling buffering conditionally with a Closure (rjwebdev)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpClient] Allow enabling buffering conditionally with a Closure

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #31883
| License       | MIT
| Doc PR        | symfony/symfony-docs#12043

With this PR, responses can be buffered automatically from a closure passed to the `buffer` option.

```php
$resp = $client->request('GET', $url, [
    'buffer' => function (array $headers): bool { return true/false; },
]);
```

When no option is provided, buffering is now enabled only for json, xml and text/* content types.

Commits
-------

f705ac9dc4 [HttpClient] Allow enabling buffering conditionally with a Closure
2019-09-09 09:21:48 +02:00
Nicolas Grekas
6b6562cf13 Merge branch '4.4'
* 4.4: (21 commits)
  [appveyor] exclude tty group
  [HttpFoundation] Add types to private/final/internal methods and constructors.
  Add types to private/final/internal methods and constructors.
  SCA: minor code tweaks
  Tweak output
  [FrameworkBundle] Added --sort option for TranslationUpdateCommand
  [HttpClient] fallbackto CURLMOPT_MAXCONNECTS when CURLMOPT_MAX_HOST_CONNECTIONS is not available
  [DI] generate preload.php file for PHP 7.4 in cache folder
  Allow version 2 of the contracts package.
  [Serializer] Allow multi-dimenstion object array in AbstractObjectNormalizer
  fixed typo
  [HttpKernel] Fix Apache mod_expires Session Cache-Control issue
  deprecated not passing dash symbol (-) to STDIN commands
  [VarDumper] display ellipsed FQCN for nested classes
  [VarDumper] Display fully qualified title
  [Mailer] Change the syntax for DSNs using failover or roundrobin
  Removed workaround introduced in 4.3
  [Console] Added support for definition list
  [OptionsResolver] Display full nested options hierarchy in exceptions
  New welcome page
  ...
2019-09-08 22:44:36 +02:00
Nicolas Grekas
81ac674b61 Merge branch '4.3' into 4.4
* 4.3:
  SCA: minor code tweaks
  [HttpClient] fallbackto CURLMOPT_MAXCONNECTS when CURLMOPT_MAX_HOST_CONNECTIONS is not available
  fixed typo
  [HttpKernel] Fix Apache mod_expires Session Cache-Control issue
  Fix getFileLinkFormat() to avoid returning the wrong URL in Profiler
2019-09-08 22:40:04 +02:00
Nicolas Grekas
0aae1d7c0a [HttpClient] fallbackto CURLMOPT_MAXCONNECTS when CURLMOPT_MAX_HOST_CONNECTIONS is not available 2019-09-08 18:59:44 +02:00
Alexander M. Turek
a1ee32039b Allow version 2 of the contracts package. 2019-09-08 12:38:38 +02:00
Nicolas Grekas
2ec3e47001 Merge branch '4.4'
* 4.4:
  [HttpClient] Fix a bug preventing Server Pushes to be handled properly
  [HttpClient] fix support for 103 Early Hints and other informational status codes
  fix typo
  [DI] fix failure
  [Validator] Add ConstraintValidator::formatValue() tests
  [HttpClient] improve handling of HTTP/2 PUSH
  Fix #33427
  lint all templates from configured Twig paths if no argument was provided
  Nullable message id?
  [Validator] Only handle numeric values in DivisibleBy
  [Validator] Sync string to date behavior and throw a better exception
  Check phpunit configuration for listeners
  registering basic exception handler for late failures
  [DI] fix support for "!tagged_locator foo"
  [Mailer] Add a more precise exception
  [ErrorHandler][Bridge/PhpUnit] display deprecations for not-autoloaded classes
2019-09-03 23:48:54 +02:00
Nicolas Grekas
b0abc10617 Merge branch '4.3' into 4.4
* 4.3:
  [HttpClient] Fix a bug preventing Server Pushes to be handled properly
  [HttpClient] fix support for 103 Early Hints and other informational status codes
  [DI] fix failure
  [Validator] Add ConstraintValidator::formatValue() tests
  [HttpClient] improve handling of HTTP/2 PUSH
  Fix #33427
  [Validator] Only handle numeric values in DivisibleBy
  [Validator] Sync string to date behavior and throw a better exception
  Check phpunit configuration for listeners
  [DI] fix support for "!tagged_locator foo"
2019-09-03 23:44:11 +02:00
Nicolas Grekas
29355c059c bug #33391 [HttpClient] fix support for 103 Early Hints and other informational status codes (nicolas-grekas)
This PR was merged into the 4.3 branch.

Discussion
----------

[HttpClient] fix support for 103 Early Hints and other informational status codes

| Q             | A
| ------------- | ---
| Branch?       | 4.3
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

I learned quite recently how 1xx status codes work in HTTP 1.1 when I discovered the [103 Early Hint](https://evertpot.com/http/103-early-hints) status code from [RFC8297](https://tools.ietf.org/html/rfc8297)

This PR fixes support for them by adding a new `getInformationalStatus()` method on `ChunkInterface`. This means that you can now know about 1xx status code by using the `$client->stream()` method:

```php

$response = $client->request('GET', '...');

foreach ($client->stream($response) as $chunk) {
    [$code, $headers] = $chunk->getInformationalStatus();
    if (103 === $code) {
        // $headers['link'] contains the early hints defined in RFC8297
    }

    // ...
}
```

Commits
-------

34275bba1c [HttpClient] fix support for 103 Early Hints and other informational status codes
2019-09-03 23:38:33 +02:00
Kévin Dunglas
e1fbaeb65c
[HttpClient] Fix a bug preventing Server Pushes to be handled properly 2019-09-03 23:26:51 +02:00
Nicolas Grekas
34275bba1c [HttpClient] fix support for 103 Early Hints and other informational status codes 2019-09-03 23:21:26 +02:00
Nicolas Grekas
019bce7230 [HttpClient] improve handling of HTTP/2 PUSH 2019-09-03 17:44:22 +02:00
Ruben Jacobs
f705ac9dc4 [HttpClient] Allow enabling buffering conditionally with a Closure 2019-09-01 16:50:09 +02:00
Nicolas Grekas
1bbe5b853e Merge branch '4.4'
* 4.4:
  [HttpClient] Added TraceableHttpClient and WebProfiler panel
2019-08-23 19:20:36 +02:00
Jérémy Romey
51640012f1 [HttpClient] Added TraceableHttpClient and WebProfiler panel
Co-authored-by: Jérémy Romey <jeremy@free-agent.fr>
Co-authored-by: Timothée Barray <tim@amicalement-web.net>
2019-08-23 19:16:53 +02:00
Nicolas Grekas
4036357150 Merge branch '4.4'
* 4.4:
  some backports from master
  Add return types to internal|final|private methods
  [HttpFoundation] Precalculate session expiry timestamp
2019-08-20 18:53:57 +02:00
Nicolas Grekas
32116184d7 Add return types to internal|final|private methods 2019-08-20 17:32:53 +02:00
Nicolas Grekas
322da9df6c Merge branch '4.4'
* 4.4:
  cs fix
  Fix inconsistent return points.
  [Config] Add handling for ignored keys in ArrayNode::mergeValues.
  Fix inconsistent return points.
  [Security/Core] UserInterface::getPassword() can return null
  cs fix
  cs fix
  Fix missing exporter in PHPUnit constraint poylfill
  added `Process::getLastOutputTime()` method
  [Router] Fix TraceableUrlMatcher behaviour with trailing slash
  [HttpKernel] Remove outdated docblock comment
  Fix handling for session parameters
  Revert "bug #33092 [DependencyInjection] Improve an exception message (fabpot)"
2019-08-20 16:46:00 +02:00
Nicolas Grekas
225bf41e3b Merge branch '4.3' into 4.4
* 4.3:
  cs fix
  Fix inconsistent return points.
  [Config] Add handling for ignored keys in ArrayNode::mergeValues.
  Fix inconsistent return points.
  [Security/Core] UserInterface::getPassword() can return null
  [Router] Fix TraceableUrlMatcher behaviour with trailing slash
  Revert "bug #33092 [DependencyInjection] Improve an exception message (fabpot)"
2019-08-20 16:44:19 +02:00
Alexander M. Turek
c26c53596e Fix inconsistent return points. 2019-08-20 16:27:59 +02:00
Jérémy Derussé
c874d3b778 Bump minimal requirements 2019-08-10 23:01:55 +02:00
Nicolas Grekas
b11129fb47 Merge branch '4.4'
* 4.4:
  Improve some URLs
  cleanup remaining param  and internal Intl FulLTransformer
  [HttpClient] fix data loss when streaming as a PHP resource
  Fix test compatibility with 4.x components
  [Cache] cs fix
2019-08-08 17:17:03 +02:00
Nicolas Grekas
f91fa10c6c bug #33058 [HttpClient] fix data loss when streaming as a PHP resource (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpClient] fix data loss when streaming as a PHP resource

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

I've just experienced failures like:
> StreamWrapper::stream_read - read 822 bytes more data than requested (9014 read, 8192 max) - excess data will be lost

This fixes it.

Commits
-------

99884e63b5 [HttpClient] fix data loss when streaming as a PHP resource
2019-08-08 17:14:06 +02:00
Nicolas Grekas
bf73bd4942 Merge branch '4.3' into 4.4
* 4.3:
  Improve some URLs
  Fix test compatibility with 4.x components
  [Cache] cs fix
2019-08-08 17:13:31 +02:00
Nicolas Grekas
fdf6fc349c Merge branch '3.4' into 4.3
* 3.4:
  Improve some URLs
  Fix test compatibility with 4.x components
  [Cache] cs fix
2019-08-08 17:11:33 +02:00
Nicolas Grekas
99884e63b5 [HttpClient] fix data loss when streaming as a PHP resource 2019-08-08 16:08:32 +02:00
Nicolas Grekas
28ae698af3 Merge branch '4.4'
* 4.4:
  Fix compatibility with PHPUnit 8
  Disable phpunit typehint patch on 4.3 branch
  Fix deprecation on 4.3
2019-08-08 14:08:24 +02:00
Nicolas Grekas
11fab74e5c Merge branch '4.3' into 4.4
* 4.3:
  Fix compatibility with PHPUnit 8
2019-08-08 12:05:21 +02:00
Nicolas Grekas
284020d633 Merge branch '4.4'
* 4.4:
  [Debug] Improve UPGRADE files
  remove wrongly added legacy group from test
  consistently throw NotSupportException
  [HttpKernel] Clarify error handler restoring process again
  [HttpClient] Remove CURLOPT_CONNECTTIMEOUT_MS curl opt
  add missing conflict rule
  [Intl] fix nullable phpdocs and useless method visibility of internal class
  remove some more useless phpdocs
  Resilience against file_get_contents() race conditions.
  Turned return type annotations of private methods into php return types.
2019-08-08 11:20:29 +02:00
Nicolas Grekas
2273de0011 Merge branch '4.3' into 4.4
* 4.3:
  consistently throw NotSupportException
  [HttpKernel] Clarify error handler restoring process again
  [HttpClient] Remove CURLOPT_CONNECTTIMEOUT_MS curl opt
  [Intl] fix nullable phpdocs and useless method visibility of internal class
  Resilience against file_get_contents() race conditions.
2019-08-08 11:18:35 +02:00
Grégoire Pineau
e289723aad [HttpClient] Remove CURLOPT_CONNECTTIMEOUT_MS curl opt 2019-08-08 08:37:38 +02:00
Nicolas Grekas
c6409da7ef Merge branch '4.4'
* 4.4:
  fix merge
  Fix inconsistent return points.
  pass translation parameters to the trans filter
  [Mime] fixed wrong mimetype
  [ProxyManagerBridge] Polyfill for unmaintained version
  [HttpClient] Declare `$active` first to prevent weird issue
  Remove deprecated assertContains
  [HttpClient] fix tests
  SCA: dropped unused mocks, duplicate import and a function alias usage
  Added correct plural for box -> boxes
  [Config] fix test
  Fix remaining tests
  fix getName() when transport is null
  [Console] Check for ErrorHandler classes
  Improve fa (persian) translation
2019-08-07 14:07:17 +02:00
Nicolas Grekas
a0c2aa8302 Merge branch '4.3' into 4.4
* 4.3:
  Fix inconsistent return points.
  pass translation parameters to the trans filter
  [Mime] fixed wrong mimetype
  [ProxyManagerBridge] Polyfill for unmaintained version
  [HttpClient] Declare `$active` first to prevent weird issue
  Remove deprecated assertContains
  [HttpClient] fix tests
  SCA: dropped unused mocks, duplicate import and a function alias usage
  Added correct plural for box -> boxes
  [Config] fix test
  Fix remaining tests
  Improve fa (persian) translation
2019-08-07 14:00:28 +02:00
Nicolas Grekas
465da038f7 bug #32989 [HttpClient] Declare $active first to prevent weird issue (Kocal)
This PR was squashed before being merged into the 4.3 branch (closes #32989).

Discussion
----------

[HttpClient] Declare `$active` first to prevent weird issue

| Q             | A
| ------------- | ---
| Branch?       | 4.3
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass?   | -    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #32833    <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | no

In some undefined cases we can have the following error while using the WebTestCase/CurlHttpClient in PHPUnit:
![Sélection_999(101)](https://user-images.githubusercontent.com/2103975/62543336-0ad9e700-b85e-11e9-8b7f-d5b49e1d2d0d.png)

This is really weird because `$active` is a reference and so it does not need to be declared before, but doing that fixes the issue. (https://github.com/symfony/symfony/issues/32833#issuecomment-518658222)

I can't add tests because we were not able to reproduce the issue...

Commits
-------

ba030f0022 [HttpClient] Declare `$active` first to prevent weird issue
2019-08-07 10:24:47 +02:00
Hugo Alliaume
ba030f0022 [HttpClient] Declare $active first to prevent weird issue 2019-08-07 10:24:40 +02:00
Nicolas Grekas
3d6eb4075a [HttpClient] fix tests 2019-08-07 09:35:08 +02:00
Christian Flothmann
9fcddddfa6 Merge branch '4.4'
* 4.4:
  [HttpClient] add "max_duration" option
2019-08-06 11:34:12 +02:00
Nicolas Grekas
3498259b12 feature #32807 [HttpClient] add "max_duration" option (fancyweb)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpClient] add "max_duration" option

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/issues/32765
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/12073

Commits
-------

a4178f1369 [HttpClient] add "max_duration" option
2019-08-06 10:45:25 +02:00
Nicolas Grekas
f4ca628fb3 Merge branch '4.4'
* 4.4:
  Minor fixes
  [Mailer] fixed dispatcher not available in Mailer
  [HttpClient] Minor fixes
  Use namespaced Phpunit classes
  Add polyfill for PhpUnit namespace
  [Messenger] Fixed ConsumeMessagesCommand configuration
  [Form] remove leftover int child phpdoc
  Support DateTimeInterface in IntlDateFormatter::format
  [PhpUnitBridge] fixed PHPUnit 8.3 compatibility: method handleError was renamed to __invoke
  [Yaml] Removed unused $nullAsTilde property
  [Security] add support for opportunistic password migrations
  [Lock] Legacy test should implement legacy interface
  fixed phpdocs
  Use PHPunit assertion
  [Intl] Order alpha2 to alpha3 mapping + phpdoc fixes
2019-08-05 16:12:50 +02:00
Nicolas Grekas
5ef437b5f4 Merge branch '4.3' into 4.4
* 4.3:
  Minor fixes
  [HttpClient] Minor fixes
  Use namespaced Phpunit classes
  [Messenger] Fixed ConsumeMessagesCommand configuration
  [Form] remove leftover int child phpdoc
  Support DateTimeInterface in IntlDateFormatter::format
  [PhpUnitBridge] fixed PHPUnit 8.3 compatibility: method handleError was renamed to __invoke
  fixed phpdocs
  Use PHPunit assertion
  [Intl] Order alpha2 to alpha3 mapping + phpdoc fixes
2019-08-05 16:07:36 +02:00
Thomas Calvet
356341bc19 [HttpClient] Minor fixes 2019-08-05 15:12:03 +02:00
Thomas Calvet
a4178f1369 [HttpClient] add "max_duration" option 2019-08-05 12:08:40 +02:00
Christian Flothmann
2d594d513b Merge branch '4.4'
* 4.4:
  fix case
  [Messenger] Removed named parameters and replaced with `?` placeholders for sqlsrv compatibility
  [FrameworkBundle] Detect indirect env vars in routing
  [Form] type cannot be a FormTypeInterface anymore
  [HttpClient] use "idle" instead of "inactivity" when telling about the timeout option
  Create mailBody with only attachments part present
  Remove calls to deprecated function assertAttributeX
  [PhpUnitBridge] make the bridge act as a polyfill for newest PHPUnit features
  [Intl] Order alpha2 to alpha3 mapping
  [Routing] added a warning about the getRouteCollection() method
  Allow sutFqcnResolver to return array
  [Messenger] Fix incompatibility with FrameworkBundle <4.3.1
  Created alias to FlattenException to avoid BC break
  [Ldap] Add security LdapUser and provider
  [HttpFoundation] Revert getClientIp @return docblock
2019-08-05 09:40:44 +02:00
Fabien Potencier
8b9de7d967 Merge branch '4.3' into 4.4
* 4.3:
  [Messenger] Removed named parameters and replaced with `?` placeholders for sqlsrv compatibility
  [HttpClient] use "idle" instead of "inactivity" when telling about the timeout option
  Create mailBody with only attachments part present
  [Messenger] Fix incompatibility with FrameworkBundle <4.3.1
2019-08-05 07:48:44 +02:00
Nicolas Grekas
d2c4bf0da8 [HttpClient] use "idle" instead of "inactivity" when telling about the timeout option 2019-08-04 17:49:22 +02:00
Nicolas Grekas
63ad8dc41f Merge branch '4.4'
* 4.4:
  fix merge
2019-08-04 00:51:43 +02:00
Nicolas Grekas
5eed0d7619 fix merge 2019-08-04 00:51:07 +02:00
Nicolas Grekas
d1ef28e7db Merge branch '4.4'
* 4.4:
  Fix tests
  Fix deprecated phpunit annotation
2019-08-02 15:12:48 +02:00
Nicolas Grekas
daa4e4020f Merge branch '4.3' into 4.4
* 4.3:
  Fix tests
  Fix deprecated phpunit annotation
2019-08-02 14:28:34 +02:00
Nicolas Grekas
1b56d7f04d Merge branch '3.4' into 4.3
* 3.4:
  Fix tests
  Fix deprecated phpunit annotation
2019-08-02 14:15:04 +02:00
Nicolas Grekas
41e931d772 Merge branch '4.4'
* 4.4:
  Fix assertInternalType deprecation in phpunit 9
  Fix assertInternalType deprecation in phpunit 9
  Ensure signatures for setUp|tearDown|setUpAfterClass|tearDownAfterClass methods in tests are compatible with phpunit 8.2
2019-08-01 13:53:34 +02:00
Nicolas Grekas
e7122418e1 minor #32858 [PhpUnitBridge] Fix deprecation assertInternalType - 4.4 (jderusse)
This PR was merged into the 4.4 branch.

Discussion
----------

[PhpUnitBridge] Fix deprecation assertInternalType - 4.4

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #32844
| License       | MIT
| Doc PR        | NA

This PR fixes PhpUnit deprecation :
> assertInternalType() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertIsArray(), assertIsBool(), assertIsFloat(), assertIsInt(), assertIsNumeric(), assertIsObject(), assertIsResource(), assertIsString(), assertIsScalar(), assertIsCallable(), or assertIsIterable() instead

follow #32846 for 4.4 branch

Commits
-------

51ba6651aa Fix assertInternalType deprecation in phpunit 9
2019-08-01 13:52:20 +02:00
Nicolas Grekas
122a7cffb1 Merge branch '4.3' into 4.4
* 4.3:
  Fix assertInternalType deprecation in phpunit 9
  Ensure signatures for setUp|tearDown|setUpAfterClass|tearDownAfterClass methods in tests are compatible with phpunit 8.2
2019-08-01 13:51:38 +02:00
Jérémy Derussé
51ba6651aa
Fix assertInternalType deprecation in phpunit 9 2019-08-01 13:34:54 +02:00
Luis Pabon
97bcb5da50 Ensure signatures for setUp|tearDown|setUpAfterClass|tearDownAfterClass methods in tests are compatible with phpunit 8.2 2019-08-01 13:15:50 +02:00
Nicolas Grekas
f1368b4e29 Merge branch '4.4'
* 4.4:
  [Security] Revise UserPasswordEncoderInterface::needsRehash()
  [Form] update type of form $name arguments
  [HttpClient] Preserve the case of headers when sending them
  [Ldap][Security] use right arguments count in sercurity factories
2019-07-31 17:14:38 +02:00
Nicolas Grekas
3b84a1aa4b Merge branch '4.3' into 4.4
* 4.3:
  [Form] update type of form $name arguments
  [HttpClient] Preserve the case of headers when sending them
2019-07-31 17:08:36 +02:00
Nicolas Grekas
9ac85d5d8b [HttpClient] Preserve the case of headers when sending them 2019-07-31 13:44:32 +02:00
Nicolas Grekas
b3eb9720de Merge branch '4.4'
* 4.4:
  [Form][Validator] Generate accept attribute with file constraint and mime types option
  [Security/Core] align defaults for sodium with PHP 7.4
  fix inline handling when dumping tagged values
  [HttpClient] fix canceling responses in a streaming loop
  [Messenger] Flatten collection of stamps collected by the traceable middleware
  [Messenger][Profiler] Remove cutting caster to dump full objects
  [WebProfilerBundle] mark all classes as internal
  Decoupling TwigBundle and using the new ErrorRenderer mechanism
  [HttpClient] rewind streams created from strings
  [PropertyAccess] Fix PropertyAccessorCollectionTest
  [HttpClient] rewind stream when using Psr18Client
  Typo in web profiler
  [4.3] Remove dead test fixtures
  [Routing] Fix CHANGELOG
  relax some date parser patterns
  adapt tests
  [Form] Repeat preferred choices in the main list
  Avoid getting right to left style
2019-07-24 16:52:25 +02:00
Nicolas Grekas
5db58f6d37 Merge branch '4.3' into 4.4
* 4.3:
  [Security/Core] align defaults for sodium with PHP 7.4
  fix inline handling when dumping tagged values
  [HttpClient] fix canceling responses in a streaming loop
  [Messenger] Flatten collection of stamps collected by the traceable middleware
  [PropertyAccess] Fix PropertyAccessorCollectionTest
  [HttpClient] rewind stream when using Psr18Client
  Typo in web profiler
  [4.3] Remove dead test fixtures
  [Routing] Fix CHANGELOG
  relax some date parser patterns
  Avoid getting right to left style
2019-07-24 16:49:41 +02:00
Fabien Potencier
1fc080b8aa bug #32689 [HttpClient] rewind stream when using Psr18Client (nicolas-grekas)
This PR was merged into the 4.3 branch.

Discussion
----------

[HttpClient] rewind stream when using Psr18Client

| Q             | A
| ------------- | ---
| Branch?       | 4.3
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony-docs/issues/11996
| License       | MIT
| Doc PR        | -

This is not a bug fix technically but just how PSR-7 works.
I'm glad we did not make it a first-class thing in Symfony.
This makes it a bit more practicable if it can be...

Commits
-------

7f4362bd46 [HttpClient] rewind stream when using Psr18Client
2019-07-24 12:16:23 +02:00
Nicolas Grekas
c5c67d913d [HttpClient] fix canceling responses in a streaming loop 2019-07-24 09:56:35 +02:00
Nicolas Grekas
33ed4e43c4 [HttpClient] rewind streams created from strings 2019-07-23 21:13:48 +02:00
Nicolas Grekas
7f4362bd46 [HttpClient] rewind stream when using Psr18Client 2019-07-23 21:01:32 +02:00
Nicolas Grekas
36c306d0ed Merge branch '4.4'
* 4.4: (30 commits)
  fix merge
  fix merge
  [HttpClient] fix debug output added to stderr at shutdown
  fix cs
  [Mailer] fixed logic
  fixed missing license
  Add a new ErrorHandler component (mirror of the Debug component)
  Use mocks before replacing the error handler
  [Config] Do not use absolute path when computing the vendor freshness
  [Process] Path resolution for FCGI configuration
  Bump minimum version of symfony/phpunit-bridge
  Container*::getServiceIds() should return an array of string
  [Config][ReflectionClassResource] Use ternary instead of null coaelscing operator
  [Validator] Add missing Russian and Ukrainian translations
  [Translation] Use HTTPS and fix a url
  [Config] Fix for signatures of typed properties
  [Validator] Add missing Hungarian translations
  [Validator] Add Lithuanian translation for Range validator
  Add HTTPS to a URL
  sync translation files
  ...
2019-07-18 12:46:32 +02:00
Nicolas Grekas
ed0b361d6f Merge branch '4.3' into 4.4
* 4.3: (25 commits)
  fix merge
  [HttpClient] fix debug output added to stderr at shutdown
  fix cs
  Use mocks before replacing the error handler
  [Config] Do not use absolute path when computing the vendor freshness
  Bump minimum version of symfony/phpunit-bridge
  Container*::getServiceIds() should return an array of string
  [Config][ReflectionClassResource] Use ternary instead of null coaelscing operator
  [Validator] Add missing Russian and Ukrainian translations
  [Translation] Use HTTPS and fix a url
  [Config] Fix for signatures of typed properties
  [Validator] Add missing Hungarian translations
  [Validator] Add Lithuanian translation for Range validator
  Add HTTPS to a URL
  sync translation files
  PHPDoc fixes
  Add notInRange translation
  Add danish translation for Range validator
  Add german translation for Range validator
  Update validators.es.xlf
  ...
2019-07-18 12:38:27 +02:00
Nicolas Grekas
f635827002 [HttpClient] fix debug output added to stderr at shutdown 2019-07-18 12:30:42 +02:00
Nicolas Grekas
330a093b83 Merge branch '4.4'
* 4.4:
  [WebProfilerBundle] Remove unneeded information in the routing panel
  Add transport factories (closes #31385, closes #32523)
  [Lock] remove uusage of the StoreInterface
  [HttpClient] make toStream() throw by default
  [Mailer] added XML configuration for the mailer envelope
  added missing test
  [Mailer] Allow register mailer configuration in xml format
  [VarDumper] Allow to configure VarDumperTestTrait casters & flags
  Improve errors when trying to find a writable property
  [Lock] add aliases for LockFactory
  fixed CS
  fix some deprecations and add upgrade instructions
  fix typo
  Added Nl translations
  fixed CS
  [FrameworkBundle] Fix descriptor of routes described as callable array
  [Debug][DebugClassLoader] Include found files instead of requiring them
  [HttpKernel] fix tests
  Adding missing event_dispatcher wiring for messenger.middleware.send_message
2019-07-17 20:45:05 +02:00
Nicolas Grekas
90e46ab13b [HttpClient] make toStream() throw by default 2019-07-16 08:40:46 +02:00
Fabien Potencier
a8f9727e72 Merge branch '4.4'
* 4.4:
  fixed CS
  [Validator] Add a new constraint message when there is both min and max
  fixed CS
  [Bundles] Rename getPublicPath() as getPublicDir()
  Remove experimental notice from components
  [LDAP] add new option implemented in php 7.1
  Replace missing message parameter
2019-07-12 09:03:26 +03:00
Fabien Potencier
6f73e62285 minor #32476 Add missing message parameter (apfelbox)
This PR was merged into the 4.4 branch.

Discussion
----------

Add missing message parameter

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | https://github.com/symfony/symfony/pull/32231#discussion_r301943379
| License       | MIT
| Doc PR        | —

<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/roadmap):
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too).
 - Features and deprecations must be submitted against branch 4.4.
 - Legacy code removals go to the master branch.
-->

Add the missing parameter in the `sprintf()` call.

Found in https://github.com/symfony/symfony/pull/32231#discussion_r301943379

Commits
-------

a060642637 Replace missing message parameter
2019-07-12 08:14:53 +03:00
Teoh Han Hui
390c9a67bf
Remove experimental notice from components 2019-07-11 11:03:49 +02:00
Jannik Zschiesche
a060642637
Replace missing message parameter 2019-07-10 11:53:52 +02:00
Fabien Potencier
a6f26a8279 Merge branch '4.4'
* 4.4:
  fixed deprecation message
  [Translation] deprecate passing a null locale
  [Intl] Exclude root language
  [Stopwatch] Deprecate passing null in Section::get() method.
  [Mime] add check for openssl when using SMime
  [HttpClient] Add $response->toStream() to cast responses to regular PHP streams
2019-07-08 09:27:27 +02:00
Nicolas Grekas
a59e0af24a [HttpClient] Add $response->toStream() to cast responses to regular PHP streams 2019-07-05 07:37:18 +02:00
Nicolas Grekas
155cfb273f Merge branch '4.4'
* 4.4: (33 commits)
  [DI] fix processing of regular parameter bags by MergeExtensionConfigurationPass
  [FrameworkBundle] reset cache pools between requests
  [HttpFoundation] Accept must take the lead for Request::getPreferredFormat()
  [FrameworkBundle] Allow to use the BrowserKit assertions with Panther and API Platform's test client
  Use ConnectionRegistry instead of RegistryInterface.
  Fixes windows error
  Improving the request/response format autodetection
  [Messager] Simplified MessageBus::__construct()
  [WIP][Mailer] Overwrite envelope sender and recipients from config
  [Messenger] Added more test for MessageBus
  [Mime] Updated some PHPDoc contents
  [PropertyAccess] Adds entries to CHANGELOG and UPGRADE
  fixed typo
  [FrameworkBundle] Simplified some code in the DI configuration
  [Filesystem] added missing deprecations to UPGRADE-4.3.md
  [Filesystem] depreacte calling isAbsolutePath with a null
  Fix authentication for redis transport
  only decorate when an event dispatcher was passed
  [Messenger] Added support for auto trimming of redis streams
  [FrmaeworkBundle] More simplifications in the DI configuration
  ...
2019-07-04 15:54:52 +02:00
Fabien Potencier
df13b506eb feature #32231 [HttpClient] Add support for NTLM authentication (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpClient] Add support for NTLM authentication

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Someone mentioned NTLM auth on Twitter, so here we are, this adds support for it.
Requires curl.

Commits
-------

548f4fd0ea [HttpClient] Add support for NTLM authentication
2019-07-03 15:28:45 +02:00
Tobias Schultze
05410342f5 Merge branch '4.4' 2019-07-02 16:48:44 +02:00
Fabien Potencier
191cb52902 removed @experimental annotations 2019-06-29 18:43:50 +02:00
Nicolas Grekas
548f4fd0ea [HttpClient] Add support for NTLM authentication 2019-06-28 09:49:23 +02:00
Nicolas Grekas
f8ccc8105c Merge branch '4.4'
* 4.4: (43 commits)
  [PhpunitBridge] Read environment variable from superglobals
  [Bridge/PhpUnit] Fix PHP5.5 compat
  [PhpUnitBridge] More accurate grouping
  fixed CS
  [Form] remove comment about to-be-removed method as it is used in master by ButtonBuilder
  Extract unrecoverable exception to interface
  [FrameworkBundle] Fix calling Client::getProfile() before sending a request
  Fix type error
  [Security/Core] require libsodium >= 1.0.14
  [Workflow] re-add workflow.definition tag to workflow services
  [Security/Core] Don't use ParagonIE_Sodium_Compat
  revert #30525 due to performance penalty
  collect called listeners information only once
  [Lock] fix missing inherit docs in RedisStore
  [Messenger] fix retrying handlers using DoctrineTransactionMiddleware
  [Mailgun Mailer] fixed issue when using html body
  [Messenger] make all stamps final and mark stamp not meant to be sent
  [HttpClient] fix timing measurements with NativeHttpClient
  add return type declaration
  use proper return types in ErrorHandler and ArgumentResolver
  ...
2019-06-26 11:36:22 +02:00
Nicolas Grekas
55c0b02587 Merge branch '4.3' into 4.4
* 4.3: (34 commits)
  [PhpunitBridge] Read environment variable from superglobals
  [Bridge/PhpUnit] Fix PHP5.5 compat
  [PhpUnitBridge] More accurate grouping
  fixed CS
  Extract unrecoverable exception to interface
  [FrameworkBundle] Fix calling Client::getProfile() before sending a request
  Fix type error
  [Security/Core] require libsodium >= 1.0.14
  [Workflow] re-add workflow.definition tag to workflow services
  [Security/Core] Don't use ParagonIE_Sodium_Compat
  revert #30525 due to performance penalty
  collect called listeners information only once
  [Lock] fix missing inherit docs in RedisStore
  [Messenger] fix retrying handlers using DoctrineTransactionMiddleware
  [Mailgun Mailer] fixed issue when using html body
  [HttpClient] fix timing measurements with NativeHttpClient
  [HttpClient] fix dealing with 1xx informational responses
  add test to avoid regressions
  fix mirroring directory into parent directory
  fix typos
  ...
2019-06-26 11:30:56 +02:00
Fabien Potencier
0219834a2d bug #32141 [HttpClient] fix dealing with 1xx informational responses (nicolas-grekas)
This PR was merged into the 4.3 branch.

Discussion
----------

[HttpClient] fix dealing with 1xx informational responses

| Q             | A
| ------------- | ---
| Branch?       | 4.3
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

I never had a look at 1xx status codes until today.
This PR fixes reading them when using curl.

If one wonders:
- `NativeHttpClient` uses `fopen()`, which skips informational parts as allowed by the HTTP spec and doesn't give any way to access their response headers.
- `CurlHttpClient` allows reading informational responses using the progress callback or via the getInfo() method. That's the way if you need to implement e.g. HTTP 103 early hints.

Commits
-------

412411d795 [HttpClient] fix dealing with 1xx informational responses
2019-06-26 09:29:23 +02:00
Nicolas Grekas
c5c3332400 [HttpClient] fix timing measurements with NativeHttpClient 2019-06-24 10:59:29 +02:00
Tobias Schultze
18793b7ca7 feature #31996 [5.0] Add return types in final classes (dFayet)
This PR was merged into the 5.0-dev branch.

Discussion
----------

[5.0] Add return types in final classes

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes/no <!-- please update src/**/CHANGELOG.md files -->
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | no
| Fixed tickets | #31981
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

This is the first step for the issue #31981

I have some questions:

-  ~I have not added type for methods with `@inheritdoc` annotation, should I?~
- ~Don't we want to type also functions without `@return` annotation? (still in `final` classes)~
- ~If yes is the answer of the previous one, do we also want the `void` return type?~
- ~I have also added the return type in the `DependencyInjection` PhpDumper, but is it also wanted? (if yes, I will clean a bit the code changed)~
- ~Should we update the documentation's code samples when they display `final` classes?~

Todo:
- [x] Adjust the PR, following the answers of the questions
- [x] Add return type also when there is no `@return`, or with `@inheritdoc`
- [x] [src/Symfony/Component/Debug/ErrorHandler.php#L383](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Debug/ErrorHandler.php#L383) `@return` annotation is not correct according to the return, investigate and adjust if needed
- [x] [src/Symfony/Component/HttpKernel/ControllerMetadata/ArgumentMetadataFactory.php#L50](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpKernel/ControllerMetadata/ArgumentMetadataFactory.php#L50) `@return` annotation is not correct according to the return, investigate and adjust if needed
- [x] Do a PR on documentation to add return type on code snippets with final classes => unneeded as they were already typed

Commits
-------

ca5ae1989e Replace @return annotation by return type in final classes
2019-06-23 23:15:46 +01:00
Nicolas Grekas
412411d795 [HttpClient] fix dealing with 1xx informational responses 2019-06-23 19:42:15 +02:00
dFayet
ca5ae1989e Replace @return annotation by return type in final classes 2019-06-23 00:57:33 +02:00
Nicolas Grekas
dc55cf826a [HttpClient] fixing passing debug info to progress callback 2019-06-18 14:13:04 +02:00
Nicolas Grekas
fa29a56683 Merge branch '4.4'
* 4.4:
  [Cache] replace getNsSeparator by NS_SEPARATOR on AbstractTrait
  [Cache] fix versioning with SimpleCacheAdapter
  [Messenger] fix AMQP delay queue to be per exchange
  Fix expired lock not cleaned
  Fine tune constructor types
  [HttpClient] throw DecodingExceptionInterface when toArray() fails because of content-type error
  [HttpFoundation] Fix SA/phpdoc JsonResponse
  [DI] Show the right class autowired when providing a non-existing class in constructor
  SimpleCacheAdapter fails to cache any item if a namespace is used
  validate composite constraints in all groups
  [Serializer] Handle true and false appropriately in CSV encoder
  [Messenger] improve logs
  [Messenger] fix delay delivery for non-fanout exchanges
  Parameterize Mailgun's region
  Fix binary operation `+`, `-` or `*` on string
  [VarDumper] fix dumping objects that implement __debugInfo()
  [HttpClient] Don't use CurlHttpClient on Windows when curl.cainfo is not set
  Add statement to fileLink to ignore href code when no fileLink.
  [Routing] fix absolute url generation when scheme is not known
2019-06-17 19:43:54 +02:00
Nicolas Grekas
651de173df Merge branch '4.3' into 4.4
* 4.3:
  [Cache] replace getNsSeparator by NS_SEPARATOR on AbstractTrait
  [Cache] fix versioning with SimpleCacheAdapter
  [Messenger] fix AMQP delay queue to be per exchange
  Fix expired lock not cleaned
  [HttpClient] throw DecodingExceptionInterface when toArray() fails because of content-type error
  [HttpFoundation] Fix SA/phpdoc JsonResponse
  [DI] Show the right class autowired when providing a non-existing class in constructor
  SimpleCacheAdapter fails to cache any item if a namespace is used
  validate composite constraints in all groups
  [Serializer] Handle true and false appropriately in CSV encoder
  [Messenger] improve logs
  [Messenger] fix delay delivery for non-fanout exchanges
  Parameterize Mailgun's region
  Fix binary operation `+`, `-` or `*` on string
  [VarDumper] fix dumping objects that implement __debugInfo()
  [HttpClient] Don't use CurlHttpClient on Windows when curl.cainfo is not set
  Add statement to fileLink to ignore href code when no fileLink.
  [Routing] fix absolute url generation when scheme is not known
2019-06-17 19:38:10 +02:00
Fabien Potencier
99c44a3836 bug #32065 [HttpClient] throw DecodingExceptionInterface when toArray() fails because of content-type error (nicolas-grekas)
This PR was merged into the 4.3 branch.

Discussion
----------

[HttpClient] throw DecodingExceptionInterface when toArray() fails because of content-type error

| Q             | A
| ------------- | ---
| Branch?       | 4.3
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #31913
| License       | MIT
| Doc PR        | -

As spotted in the linked issue, we are missing this type of exception. It's a bug at the contracts level.

Commits
-------

3f167417fb [HttpClient] throw DecodingExceptionInterface when toArray() fails because of content-type error
2019-06-17 18:35:34 +02:00
Nicolas Grekas
3f167417fb [HttpClient] throw DecodingExceptionInterface when toArray() fails because of content-type error 2019-06-16 20:17:37 +02:00
Nicolas Grekas
a2960a3318 [HttpClient] Don't use CurlHttpClient on Windows when curl.cainfo is not set 2019-06-13 14:16:31 +02:00
Fabien Potencier
c449e6368c Merge branch '4.4'
* 4.4:
  fixed CS
  fixed CS
  fixed CS
  fixed CS
  Do not log or call the proxy function when the locale is the same
  Added missing required dependencies on psr/cache and psr/container in symfony/cache-contracts and symfony/service-contracts respectively.
  [HttpClient] fix closing debug stream prematurely
  [Mailer] made code more robust
  Restore compatibility with php 5.5
  fixed sender/recipients in SMTP Envelope
  collect called listeners information only once
  [HttpClient] add HttplugClient for compat with libs that need httplug v1 or v2
  [HttpKernel] Remove TestEventDispatcher.
2019-06-13 13:15:36 +02:00
Fabien Potencier
8787bbc94a Merge branch '4.3' into 4.4
* 4.3:
  fixed CS
  fixed CS
  fixed CS
  Do not log or call the proxy function when the locale is the same
  Added missing required dependencies on psr/cache and psr/container in symfony/cache-contracts and symfony/service-contracts respectively.
  [HttpClient] fix closing debug stream prematurely
  [Mailer] made code more robust
  Restore compatibility with php 5.5
  fixed sender/recipients in SMTP Envelope
  collect called listeners information only once
  [HttpKernel] Remove TestEventDispatcher.
2019-06-13 13:05:05 +02:00
Fabien Potencier
9526988eca fixed CS 2019-06-13 13:03:18 +02:00
Nicolas Grekas
21857a1edb [HttpClient] fix closing debug stream prematurely 2019-06-12 15:33:27 +02:00
Nicolas Grekas
28674b1e30 [HttpClient] add HttplugClient for compat with libs that need httplug v1 or v2 2019-06-11 17:49:07 +02:00
Nicolas Grekas
03bfce6a40 Merge branch '4.4'
* 4.4:
  add back possibility to use form themes without translations
  [HttpClient] fix Psr18Client handling of non-200 response codes
  [HttpClient] make Psr18Client implement relevant PSR-17 factories
  [WebProfilerBundle] fix FC with HttpFoundation v5
  [OptionsResolver] fix adding $triggerDeprecation to Options::offsetGet()
  [Form] test case is not legacy
  Fix reporting unsilenced deprecations from insulated tests
  Changed EventDispatcherInterface dependency from Component to Contracts
  fix handling nested embeddables
  [WebProfilerBundle] Select default theme based on user preferences
  [FrameworkBundle] Allow dots in translation domains
  Added FormInterface to @return Form::getClickedButton docblock
2019-06-11 17:48:37 +02:00
Nicolas Grekas
e54b62c1e2 Merge branch '4.3' into 4.4
* 4.3:
  add back possibility to use form themes without translations
  [HttpClient] fix Psr18Client handling of non-200 response codes
  [WebProfilerBundle] fix FC with HttpFoundation v5
  [OptionsResolver] fix adding $triggerDeprecation to Options::offsetGet()
  [Form] test case is not legacy
  Fix reporting unsilenced deprecations from insulated tests
  fix handling nested embeddables
  Added FormInterface to @return Form::getClickedButton docblock
2019-06-11 17:42:17 +02:00
Nicolas Grekas
4a7989456b [HttpClient] fix Psr18Client handling of non-200 response codes 2019-06-10 19:33:33 +02:00
Nicolas Grekas
1c0baf689d [HttpClient] make Psr18Client implement relevant PSR-17 factories 2019-06-10 18:43:03 +02:00
Nicolas Grekas
c0e3f27a18 Merge branch '4.4'
* 4.4:
  [Cache] Fixed undefined variable in ArrayTrait
  [HttpClient] revert bad logic around JSON_THROW_ON_ERROR
  [HttpKernel] Fix handling non-catchable fatal errors
  Fix json-encoding when JSON_THROW_ON_ERROR is used
  [HttpFoundation] work around PHP 7.3 bug related to json_encode()
  [HttpClient] add $response->cancel()
  [Security] added support for updated \"distinguished name\" format in x509 authentication
2019-06-05 15:28:50 +02:00
Nicolas Grekas
d3055814ad Merge branch '4.3' into 4.4
* 4.3:
  [Cache] Fixed undefined variable in ArrayTrait
  [HttpClient] revert bad logic around JSON_THROW_ON_ERROR
  [HttpKernel] Fix handling non-catchable fatal errors
  Fix json-encoding when JSON_THROW_ON_ERROR is used
  [HttpFoundation] work around PHP 7.3 bug related to json_encode()
  [HttpClient] add $response->cancel()
  [Security] added support for updated \"distinguished name\" format in x509 authentication
2019-06-05 15:27:25 +02:00
Fabien Potencier
e5b082acee bug #31850 [HttpClient] add $response->cancel() (nicolas-grekas)
This PR was merged into the 4.3 branch.

Discussion
----------

[HttpClient] add $response->cancel()

| Q             | A
| ------------- | ---
| Branch?       | 4.3
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/11668

An alternative to #31845 and #31842.
Same as  #31831 but considered as a bug fix (at the Contracts level), thus for 4.3.
I think we're early enough since 4.3/1.1 to do it.
That will save us some headaches in the short term.

Commits
-------

c402418723 [HttpClient] add $response->cancel()
2019-06-05 15:19:12 +02:00
Nicolas Grekas
846116edab [HttpClient] revert bad logic around JSON_THROW_ON_ERROR 2019-06-05 13:58:47 +02:00
Fabien Potencier
d2909caa9b Merge branch '4.4'
* 4.4:
  [Console] Add check for Konsole/Yakuake to disable hyperlinks
  [HTTP Foundation] Deprecate passing argument to method Request::isMethodSafe()
  [HttpClient] work around PHP 7.3 bug related to json_encode()
  [VarDumper] fix dumping the cloner itself
  Rename the Symfony Mailer service config to avoid conflict with SwitMailer
  Set default crypto method - Fix #31105
  [Form] add missing symfony/service-contracts dependency
  [HttpClient] Don't throw InvalidArgumentException on bad Location header
2019-06-05 04:28:25 +02:00
Fabien Potencier
7207849037 Merge branch '4.3' into 4.4
* 4.3:
  [Console] Add check for Konsole/Yakuake to disable hyperlinks
  [HttpClient] work around PHP 7.3 bug related to json_encode()
  [VarDumper] fix dumping the cloner itself
  Rename the Symfony Mailer service config to avoid conflict with SwitMailer
  Set default crypto method - Fix #31105
  [Form] add missing symfony/service-contracts dependency
  [HttpClient] Don't throw InvalidArgumentException on bad Location header
2019-06-05 04:26:21 +02:00
Fabien Potencier
d90dd8da98 bug #31834 [HttpClient] Don't throw InvalidArgumentException on bad Location header (nicolas-grekas)
This PR was merged into the 4.3 branch.

Discussion
----------

[HttpClient] Don't throw InvalidArgumentException on bad Location header

| Q             | A
| ------------- | ---
| Branch?       | 4.3
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #31776
| License       | MIT
| Doc PR        | -

Instead, just stop following redirections and throw a `RedirectionExceptionInterface` as usual when throwing is not disabled.

Commits
-------

4acca42330 [HttpClient] Don't throw InvalidArgumentException on bad Location header
2019-06-05 04:18:50 +02:00
Nicolas Grekas
42904e34e6 [HttpClient] work around PHP 7.3 bug related to json_encode() 2019-06-04 21:00:49 +02:00
Fabien Potencier
1177a2aeed Merge branch '4.4'
* 4.4:
  Fix inconsistency in json format regarding DST value
  changed type hints
  conflict with HttpKernel component 5.0
  do not process private properties from parent class
  [HttpClient] fix unregistering the debug buffer when using curl
  don't add embedded properties to wrapping class metadata
  [Messenger] set amqp content_type based on serialization format
  [Mailer] fixed the possibility to set a From header from MessageListener
2019-06-04 14:24:56 +02:00
Fabien Potencier
926ded8ea5 Merge branch '4.3' into 4.4
* 4.3:
  Fix inconsistency in json format regarding DST value
  changed type hints
  do not process private properties from parent class
  [HttpClient] fix unregistering the debug buffer when using curl
  don't add embedded properties to wrapping class metadata
  [Messenger] set amqp content_type based on serialization format
  [Mailer] fixed the possibility to set a From header from MessageListener
2019-06-04 14:24:01 +02:00
Nicolas Grekas
c402418723 [HttpClient] add $response->cancel() 2019-06-04 13:36:30 +02:00
Nicolas Grekas
4acca42330 [HttpClient] Don't throw InvalidArgumentException on bad Location header 2019-06-04 10:32:15 +02:00
Fabien Potencier
87e84ac40e Merge branch '4.4'
* 4.4:
  Extract Abstract Doctrine Middleware
  [Translation] refactor ArrayLoader::flatten
  [TwigBundle] mark TemplateIterator as internal
  Improved error message on create a form builder with invalid options
  [Security] add PasswordEncoderInterface::needsRehash()
  [HttpClient] add $response->cancel()
  Add clear Entity Manager middleware (closes #29662)
  [FrameworkBundle] Add missing BC layer for deprecated ControllerNameParser injections
  [Validator] Improve TypeValidator to handle array of types
  Add exception as HTML comment to beginning and end of `exception_full.html.twig`
  [Validator] Add compared value path to violation parameters
2019-06-04 09:20:45 +02:00
Nicolas Grekas
4fce813ed0 [HttpClient] fix unregistering the debug buffer when using curl 2019-06-04 08:38:41 +02:00
Nicolas Grekas
549930e820 [HttpClient] add $response->cancel() 2019-06-03 20:11:29 +02:00
Robin Chalas
e5aaa8cd57 Merge branch '4.4'
* 4.4:
  [SecurityBundle][Workflow] Forbid security-core 5.x
  [Security\Core] Make SodiumPasswordEncoder validate BCrypt-ed passwords
  [MonologBridge] RouteProcessor class is now final to ease the the removal of deprecated event
  [Validator] Fix TimezoneValidator default option
  [Messenger] Inject RoutableMessageBus instead of bus locator
  [DomCrawler] Fix type error with null Form::$currentUri
  [Contracts] Fixed typos
  [Security][Http] Forbid security-core 5.x
  do not enable validator auto mapping by default
  [HttpClient] remove unused argument
2019-05-31 20:58:54 +02:00
Robin Chalas
8e5b6573ea Merge branch '4.3' into 4.4
* 4.3:
  [Security\Core] Make SodiumPasswordEncoder validate BCrypt-ed passwords
  [Validator] Fix TimezoneValidator default option
  [Messenger] Inject RoutableMessageBus instead of bus locator
  [DomCrawler] Fix type error with null Form::$currentUri
  [Contracts] Fixed typos
  do not enable validator auto mapping by default
  [HttpClient] remove unused argument
2019-05-31 20:55:48 +02:00
Nicolas Grekas
da85b48c32 [HttpClient] remove unused argument 2019-05-30 18:27:37 +02:00
Nicolas Grekas
dc82bba1e1 Merge branch '4.4'
* 4.4:
  Use willReturn() instead of will(returnValue()).
2019-05-30 18:12:02 +02:00
Nicolas Grekas
c62032a730 Merge branch '4.3' into 4.4
* 4.3:
  Use willReturn() instead of will(returnValue()).
2019-05-30 18:10:19 +02:00
Nicolas Grekas
0da213711c Merge branch '4.2' into 4.3
* 4.2:
  Use willReturn() instead of will(returnValue()).
2019-05-30 18:10:05 +02:00
Nicolas Grekas
3fadcc6a96 Merge branch '4.4'
* 4.4:
  [HttpKernel] Make DebugHandlersListener internal
  HttpKernel 4.4 is incompatible with Console 5 because of the EventDispatcher changes.
  Add missed use class for Symfony\Bundle\FrameworkBundle\Test\WebTestCase::$client
  bump Twig bridge dependency
  [HttpClient] Minor fix in an error message
  Fix parameter documentation for Inflector::pluralize() method
  Use a more appropriate group when deprecating mode
  Marked several components as incompatible with EventDispatcher 5.
  bumped Symfony version to 4.3.1
  updated VERSION for 4.3.0
  updated CHANGELOG for 4.3.0
  [FrameworkBundle] fix test fixture using deprecated controller and add missing deprecation
  exchanged $rootDir and $fileLinkFormatter arguments in DebugCommand
  [FrameworkBundle] Add a validation on the messenger section
2019-05-30 15:57:29 +02:00
Nicolas Grekas
47fd08eb5c Merge branch '4.3' into 4.4
* 4.3:
  Add missed use class for Symfony\Bundle\FrameworkBundle\Test\WebTestCase::$client
  [HttpClient] Minor fix in an error message
  Fix parameter documentation for Inflector::pluralize() method
  Use a more appropriate group when deprecating mode
  bumped Symfony version to 4.3.1
  updated VERSION for 4.3.0
  updated CHANGELOG for 4.3.0
  [FrameworkBundle] fix test fixture using deprecated controller and add missing deprecation
  [FrameworkBundle] Add a validation on the messenger section
2019-05-30 15:50:22 +02:00
Javier Eguiluz
2da9e3f717 [HttpClient] Minor fix in an error message 2019-05-30 11:47:28 +02:00
Nicolas Grekas
2dffc58aac Bump deps to ^4.4|^5.0 for Symfony 5.0 2019-05-28 20:01:02 +02:00
Nicolas Grekas
d94d9d792c Bump Symfony 5.0 to PHP 7.2 2019-05-28 18:49:20 +02:00
Nicolas Grekas
66924dba7c Merge branch '4.4'
* 4.4:
  Allow Symfony 5.0
2019-05-28 18:26:29 +02:00
Nicolas Grekas
384393cb36 Allow Symfony 5.0 2019-05-28 17:53:17 +02:00
Fabien Potencier
8869eb3521 updated version to 5.0 2019-05-28 14:18:42 +02:00
Nicolas Grekas
086ca1b6f5 Merge branch '4.3'
* 4.3:
  [HttpClient] make $response->getInfo('debug') return extended logs about the HTTP transaction
  fix typo
  Fixes a small doc blocks syntax error
  Small grammar mistake in documentation
  [Messenger] Use real memory usage for --memory-limit
  [Workflow] Do not trigger extra guard
2019-05-28 10:29:32 +02:00
Nicolas Grekas
1214609b37 [HttpClient] make $response->getInfo('debug') return extended logs about the HTTP transaction 2019-05-28 10:25:44 +02:00
Fabien Potencier
e2aae82f35 Merge branch '4.3'
* 4.3:
  Reference individual contracts packages
2019-05-27 12:42:03 +02:00
Nicolas Grekas
0a640c53cb Reference individual contracts packages 2019-05-27 10:16:38 +02:00
Fabien Potencier
5dba412d30 Merge branch '4.3'
* 4.3: (22 commits)
  [Messenger] Fix incorrect error when symfony/serializer is missing
  Allow WrappedListener to describe uncallable listeners.
  [HttpClient] fix handling exceptions thrown before first mock chunk
  [Filesystem] fix wrong method call casing
  [HttpClient] fix test
  [Translation] Fixed issue with new vs old TranslatorInterface in TranslationDataCollector
  Don't reference symfony/security
  [HttpClient] display proper error message on TransportException when curl is used
  [FrameworkBundle] fix named autowiring aliases for TagAwareCacheInterface
  [Cache] improve logged messages
  [FrameworkBundle] improve cs
  [Mime][HttpFoundation] Added mime type audio/x-hx-aac-adts
  bumped Symfony version to 4.3.0
  updated VERSION for 4.3.0-BETA2
  updated CHANGELOG for 4.3.0-BETA2
  [HttpClient] Only use CURLMOPT_MAX_HOST_CONNECTIONS & CURL_VERSION_HTTP2 if defined
  [Security] fixed a fatal error when upgrading from 4.2
  [HttpClient] Allow arrays as query parameters
  Throws UnrecoverableMessageHandlingException when passed invalid entity manager name for Doctrine middlewares
  [Messenger] Make redis Connection::get() non blocking by default
  ...
2019-05-26 11:07:14 +02:00
Nicolas Grekas
812b0172f4 [HttpClient] fix handling exceptions thrown before first mock chunk 2019-05-24 16:45:54 +02:00
Nicolas Grekas
ce26936730 [HttpClient] fix test 2019-05-24 10:15:37 +02:00
Nicolas Grekas
3273109cbe [HttpClient] display proper error message on TransportException when curl is used 2019-05-23 08:55:10 +02:00
Gawain Lynch
4ea7283138
[HttpClient] Only use CURLMOPT_MAX_HOST_CONNECTIONS & CURL_VERSION_HTTP2 if defined
- CURLMOPT_MAX_HOST_CONNECTIONS is available since PHP 7.0.7 and cURL 7.30.0
 - CURL_VERSION_HTTP2 is available since PHP 5.5.24 and 5.6.8 and cURL 7.33.0
2019-05-22 06:50:01 +02:00
Andriy Prokopenko
1cbefd7fca [HttpClient] Allow arrays as query parameters 2019-05-21 18:51:43 +02:00
Nicolas Grekas
beb603694d Merge branch '4.3'
* 4.3: (23 commits)
  minor: add some test in the ldap component
  [Workflow] Update MethodMarkingStore
  [Bridge\ProxyManager] isProxyCandidate() does not take into account interfaces
  adding experimental note
  [HttpClient] add missing argument check
  [Messenger] Fix undefined index on read timeout
  [Workflow] use method marking store
  [Routing][AnnotationClassLoader] fix utf-8 encoding in default route name
  fixed a phpdoc
  [Debug] Wrap call to require_once in a try/catch
  [EventDispatcher] Removed "callable" type hint from WrappedListener constructor
  prevent deprecation when filesize matches error code
  [PropertyInfo] Add missing documentation link in Readme
  Use the current working dir as default first arg in 'link' binary
  Respect parent class contract in ContainerAwareDoctrineEventManager
  [WebProfilerBundle][Form] The form data collector return serialized object when profiler bundle attends object
  [Validator] Add the missing translations for the Danish ("da") locale
  [PropertyAccess] Add missing property to PropertyAccessor
  [Cache] fix saving unrelated keys in recursive callback calls
  [Serializer] Fix denormalization of object with variadic constructor typed argument
  ...
2019-05-20 18:28:43 +02:00
Nicolas Grekas
964acd9110 [HttpClient] add missing argument check 2019-05-19 11:37:13 -03:00
Nicolas Grekas
780439dcc3 Merge branch '4.3'
* 4.3:
  [Routing] Fixed unexpected 404 NoConfigurationException
  [DI] Removes number of elements information in debug mode
  [Contracts] Simplify implementation declarations
  Update PR template for 4.3
  [Intl] Add FallbackTrait for data generation
  [Console] Commands with an alias should not be recognized as ambiguous
  clarify the possible class/interface of the cache
2019-05-09 11:43:27 +02:00
Nicolas Grekas
7a53e8d3f9 Merge branch '4.2' into 4.3
* 4.2:
  [Routing] Fixed unexpected 404 NoConfigurationException
  [DI] Removes number of elements information in debug mode
  [Contracts] Simplify implementation declarations
  Update PR template for 4.3
  [Intl] Add FallbackTrait for data generation
  [Console] Commands with an alias should not be recognized as ambiguous
  clarify the possible class/interface of the cache
2019-05-09 11:33:12 +02:00
Fabien Potencier
387207f6c4 updated version to 4.4 2019-05-09 09:23:25 +02:00
Nicolas Grekas
3aaa742d40 [HttpClient] fix skipping h2push test case 2019-04-28 23:09:39 +02:00
Fabien Potencier
9edd84bce0 bug #30967 [HttpClient] Document the state object that is passed around by the HttpClient (derrabus)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] Document the state object that is passed around by the HttpClient

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

In an attempt to make the code of the new HttpClient component more understandable, I've introduced internal classes that document the `$multi` object that is being passed around between *Client and *Response classes.

My goal is to make the code more accessible to potential contributors and static code analyzers.

Commits
-------

20f4eb3204 Document the state object that is passed around by the HttpClient.
2019-04-12 11:04:34 +02:00
Pol Dellaiera
526cad6909 Make sure that logged URL is the same as the one which is requested. 2019-04-11 09:17:46 +02:00
Giso Stallenberg
601adf5de7 [HttpClient] Do not allow setting both json and body 2019-04-10 17:10:32 +02:00
Alexander M. Turek
20f4eb3204 Document the state object that is passed around by the HttpClient. 2019-04-10 13:03:42 +02:00
Pol Dellaiera
e77108d24e [HttpClient] Add tests - update code style nits. 2019-04-09 11:46:29 +02:00
Fabien Potencier
6a5de47ed7 bug #31028 Fixes unmapped parameter for an error message in HttpClientTrait (dbrumann)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Fixes unmapped parameter for an error message in HttpClientTrait

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ---
| License       | MIT
| Doc PR        | ---

Commits
-------

b9e2046821 Fixes sprintf unmapped parameter.
2019-04-09 08:06:22 +02:00
Denis Brumann
b9e2046821
Fixes sprintf unmapped parameter. 2019-04-08 21:51:36 +02:00
Théo FIDRY
fbd439e0bd [HttpClient] Allow the HTTP_PROXY environment variable lookup with phpdbg 2019-04-08 17:24:39 +02:00
Alexander M. Turek
69f0a0b3bf Removed undefined variable. 2019-04-06 20:38:25 +02:00
Amrouche Hamza
4fc603327d
minor: remove the logger as it seems uneeded 2019-04-06 11:23:31 +02:00
Grégoire Pineau
098a7ac1af [HttpClient] Adjust logger messages and levels 2019-04-05 16:18:29 +02:00
Nicolas Grekas
26d15c8bbe [HttpClient] log requests, responses and pushes when they happen 2019-04-05 13:59:27 +02:00
Anton Chernikov
fc6ba7efad [HttpClient] logger integration 2019-04-04 13:03:55 +02:00
Fabien Potencier
8da76862fa feature #30843 [HttpClient] Add ScopingHttpClient::forBaseUri() + tweak MockHttpClient (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] Add ScopingHttpClient::forBaseUri() + tweak MockHttpClient

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

This allows creating scoped HTTP clients in one line:

```php
$client = ScopingHttpClient::forBaseUri($client, 'http://example.com');
```

`$client` now resolves relative URLs using the provided base URI.

If one also adds default options as 3rd argument, these will be applied conditionally when a URL matching the base URI is requested.

This PR also tweaks `MockHttpClient` to make it return `MockResponse` on its own when no constructor argument is provided, easing tests a bit.

Commits
-------

2b9b8e5707 [HttpClient] Add ScopingHttpClient::forBaseUri() + tweak MockHttpClient
2019-04-03 12:40:25 +02:00
Nicolas Grekas
2b9b8e5707 [HttpClient] Add ScopingHttpClient::forBaseUri() + tweak MockHttpClient 2019-04-03 11:54:40 +02:00
Nicolas Grekas
f1a26b9aea [FrameworkBundle] change the way http clients are configured by leveraging ScopingHttpClient 2019-04-03 10:47:24 +02:00
Nicolas Grekas
0b21268bf5 [HttpClient][Contracts] rename "raw_headers" to "response_headers" 2019-04-02 12:06:39 +02:00
Nicolas Grekas
162d5a8272 feature #30752 [HttpClient] use "nyholm/psr7" by default in Psr18Client (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] use "nyholm/psr7" by default in Psr18Client

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

This makes the factory arguments of `Psr18Client` optional, with a fallback to using `Nyholm\Psr7\Factory\Psr17Factory` when no factories are provided.

Commits
-------

f2222e4bf5 [HttpClient] use "nyholm/psr7" by default in Psr18Client
2019-03-28 17:44:24 +01:00
Nicolas Grekas
f2222e4bf5 [HttpClient] use "nyholm/psr7" by default in Psr18Client 2019-03-28 17:41:24 +01:00
Nicolas Grekas
332a88c8ce [HttpClient] correctly clean state on destruct in CurlResponse 2019-03-28 16:53:35 +01:00
Samuel NELA
60b077337c [HttpClient] Remove unused local variable 2019-03-28 10:31:46 +01:00
Robin Chalas
6eddb52333 [HttpClient] Fix missing use statement 2019-03-26 01:54:03 +01:00
Fabien Potencier
041f60f80a feature #30559 [HttpClient] Parse common API error formats for better exception messages (dunglas)
This PR was squashed before being merged into the 4.3-dev branch (closes #30559).

Discussion
----------

[HttpClient] Parse common API error formats for better exception messages

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | no
| New feature?  | yes <!-- don't forget to update src/**/CHANGELOG.md files -->
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | n/a  <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | todo?

Use extra details provided by popular error formats following to improve HTTP exception messages.
The following formats are supported:

* Hydra (default in API Platform)
* RFC 7807 (followed by Symfony's [ConstraintViolationListNormalizer](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Serializer/Normalizer/ConstraintViolationListNormalizer.php) and supported by API Platform and Apigility)
* JSON:API (because it respects the semantic of the RFC 7807)

It allows to write code like the following (here in a test context):

```php
    public function testBadRequest()
    {
        $this->expectException(ClientExceptionInterface::class);
        $this->expectExceptionCode(400); // HTTP status code
        $this->expectExceptionMessage(<<<ERROR
Validation Failed

users: This collection should contain 1 element or more.
users: The current logged in user must be part of the users owning this resource.
ERROR
);

        $response = (HttpClient::create())->request('POST', 'http://example.com/api/projects', [
            'json' => [
                'name' => 'My project',
            ],
        ]);
        $response->getContent();
    }
```

Port of https://github.com/api-platform/core/pull/2608#issuecomment-472510732.

Commits
-------

96df4464a1 [HttpClient] Parse common API error formats for better exception messages
2019-03-24 18:15:37 +01:00
Kévin Dunglas
96df4464a1 [HttpClient] Parse common API error formats for better exception messages 2019-03-24 18:15:28 +01:00
Fabien Potencier
d6c0de2f1b fixed CS 2019-03-23 16:10:57 +01:00
Fabien Potencier
359e1c7a44 feature #30629 [HttpClient] added CachingHttpClient (fabpot)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] added CachingHttpClient

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

The proposed `CachingHttpClient` uses `HttpCache` from the HttpKernel component to provide an HTTP-compliant cache.

If this is accepted, it could replace the corresponding part in #30602

Commits
-------

dae5686722 [HttpClient] added CachingHttpClient
2019-03-23 16:10:13 +01:00
Fabien Potencier
d73a53a61c feature #30602 [BrowserKit] Add support for HttpClient (fabpot, THERAGE Kévin)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[BrowserKit] Add support for HttpClient

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | part of #30502
| License       | MIT
| Doc PR        | not yet

When combining the power of the new HttpClient component with the BrowserKit and Mime components, we can makes something really powerful... a full/better/awesome replacement for https://github.com/FriendsOfPHP/Goutte.

So, this PR is about integrating the HttpClient component with BrowserKit to give users a high-level interface to ease usages in the most common use cases.

Scraping websites can be done like this:

```php
use Symfony\Component\BrowserKit\HttpBrowser;
use Symfony\Component\HttpClient\HttpClient;

$client = HttpClient::create();
$browser = new HttpBrowser($client);

$browser->request('GET', 'https://example.com/');
$browser->clickLink('Log In');
$browser->submitForm('Sign In', ['username' => 'me', 'password' => 'pass']);
$browser->clickLink('Subscriptions')->filter('table tr:nth-child(2) td:nth-child(2)')->each(function ($node) {
    echo trim($node->text())."\n";
});
```

And voilà! Nice, isn't?

Want to add HTTP cache? Sure:

```php
use Symfony\Component\HttpKernel\HttpCache\Store;

$client = HttpClient::create();
$store = new Store(sys_get_temp_dir().'/http-cache-store');

$browser = new HttpBrowser($client, $store);

// ...
```

Want logging and debugging of HTTP Cache? Yep:

```php
use Psr\Log\AbstractLogger;

class EchoLogger extends AbstractLogger
{
    public function log($level, $message, array $context = [])
    {
        echo $message."\n";
    }
}

$browser = new HttpBrowser($client, $store, new EchoLogger());
```

The first time you run your code, you will get an output similar to:

```
Request: GET https://twig.symfony.com/
Response: 200 https://twig.symfony.com/
Cache: GET /: miss, store
Request: GET https://twig.symfony.com/doc/2.x/
Response: 200 https://twig.symfony.com/doc/2.x/
Cache: GET /doc/2.x/: miss, store
```

But then:

```
Cache: GET /: fresh
Cache: GET /doc/2.x/: fresh
```

Limit is the sky here as you get the full power of all the Symfony ecosystem.

Under the hood, these examples leverage HttpFoundation, HttpKernel (with HttpCache),
DomCrawler, BrowserKit, CssSelector, HttpClient, Mime, ...

Excited?

P.S. : Tests need to wait for the HttpClient Mock class to land into master.

Commits
-------

b5b2a2557c Add tests for HttpBrowser
dd55845706 [BrowserKit] added support for HttpClient
2019-03-23 16:07:52 +01:00
Anthony MARTIN
1ee0a1147a [HttpClient] Add a ScopingHttpClient 2019-03-23 10:56:47 +01:00
Fabien Potencier
dae5686722 [HttpClient] added CachingHttpClient 2019-03-22 16:52:17 +01:00
Fabien Potencier
dd55845706 [BrowserKit] added support for HttpClient 2019-03-22 12:38:00 +01:00
Nicolas Grekas
26f6e28160 [HttpClient] improve MockResponse 2019-03-21 13:37:55 +01:00
Fabien Potencier
d5d1b50cf7 feature #30604 [HttpClient] add MockHttpClient (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] add MockHttpClient

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

This PR introduces `MockHttpClient` and `MockResponse`, to be used for testing classes that need an HTTP client without making actual HTTP requests.

`MockHttpClient` is configured via its constructor: you provide it either with an iterable or a callable, and these will be used to provide responses as the consumer requests them.

Example:
```php
$responses = [
    new MockResponse($body1, $info1),
    new MockResponse($body2, $info2),
];

$client = new MockHttpClient($responses);
$response1 = $client->request(...); // created from $responses[0]
$response2 = $client->request(...); // created from $responses[1]
```

Or alternatively:
```php
$callback = function ($method, $url, $options) {
    return new MockResponse(...);
};

$client = new MockHttpClient($callback);
$response = $client->request(...); // calls $callback internal
```

The responses provided to the client don't have to be instances of `MockResponse` - any `ResponseInterface` works (e.g. `$this->getMockBuilder(ResponseInterface::class)->getMock()`).

Using `MockResponse` allows simulating chunked responses and timeouts:
```php
$body = function () {
    yield 'hello';
    yield ''; // the empty string is turned into a timeout so that they are easy to test
    yield 'world';
};
$mockResponse = new Mockresponse($body);
```

Last but not least, the implementation simulates the full lifecycle of a properly behaving `HttpClientInterface` contracts implementation: error handling, progress function, etc. This is "proved" by `MockHttpClientTest`, who implements and passes the reference test suite in `HttpClientTestCase`.

Commits
-------

8fd7584158 [HttpClient] add MockHttpClient
2019-03-19 19:41:07 +01:00
Nicolas Grekas
8fd7584158 [HttpClient] add MockHttpClient 2019-03-19 19:38:55 +01:00
Fabien Potencier
bff9e68bb4 feature #30567 [HttpClient] exceptions carry response (antonch1989)
This PR was squashed before being merged into the 4.3-dev branch (closes #30567).

Discussion
----------

[HttpClient] exceptions carry response

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #30502
| License       | MIT
| Doc PR        |

Commits
-------

103448cc67 [HttpClient] exceptions carry response
2019-03-19 08:49:53 +01:00
Anton Chernikov
103448cc67 [HttpClient] exceptions carry response 2019-03-19 08:49:42 +01:00
Anthony MARTIN
01a663aea0 [HttpClient] changes minimal php version to use curl push function 2019-03-18 16:11:55 +01:00
Thomas Talbot
0023a71260 [FrameworkBundle] Add integration of http-client component 2019-03-17 17:08:17 +01:00
Fabien Potencier
d7fdcb1a5d minor #30549 [HttpClient] Make exceptions public (dunglas)
This PR was squashed before being merged into the 4.3-dev branch (closes #30549).

Discussion
----------

[HttpClient] Make exceptions public

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no<!-- don't forget to update src/**/CHANGELOG.md files -->
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #...   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | n/a

Makes it easier to implement the interface. See api-platform/core#2608

Commits
-------

928d774e4a [HttpClient] Make exceptions public
2019-03-17 08:23:56 +01:00
Kévin Dunglas
928d774e4a [HttpClient] Make exceptions public 2019-03-17 08:23:49 +01:00
Nicolas Grekas
9ee5ff775d minor #30561 [HttpClient] strengthen bearer validation (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] strengthen bearer validation

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Better be sure CR/LF/etc cannot be passed inside raw header values, opening potential security risks.

Commits
-------

e6e162075d [HttpClient] strengthen bearer validation
2019-03-15 13:49:26 +01:00
Nicolas Grekas
e6e162075d [HttpClient] strengthen bearer validation 2019-03-14 12:13:43 +01:00
Kévin Dunglas
7308e5a8e6
[HttpClient] Fix HttpOptions::setAuthBearer() 2019-03-14 10:55:31 +01:00
Kévin Dunglas
8d5096a638
[HttpClient] Allow to pass user/pw as an array 2019-03-14 08:32:36 +01:00
Kévin Dunglas
f79ef21458 [HttpClient] Add new bearer option 2019-03-14 08:15:49 +01:00
Nicolas Grekas
a31c87798f Merge branch '4.2'
* 4.2:
  Fix README about BC promise
  Fixed typo
2019-03-12 19:57:21 +01:00
Nicolas Grekas
e11ef7ed12 [HttpClient] yield a last chunk for completed responses also 2019-03-11 12:00:28 +01:00
Nicolas Grekas
aabd1d455e [HttpClient] add ResponseInterface::toArray() 2019-03-09 17:49:48 +01:00
Nicolas Grekas
3eca2b448d [HttpClient] fixes 2019-03-08 17:57:56 +01:00
Nicolas Grekas
fc83120691 [HttpClient] Add Psr18Client - aka a PSR-18 adapter 2019-03-07 17:16:39 +01:00
Nicolas Grekas
8610668c1c [HttpClient] introduce the component 2019-03-07 17:16:39 +01:00