[HttpFoundation] Added BinaryFileResponse.
Fixed typos
[Finder] Added filename containing space to tests.
[Finder] Fixed filename containing space bug in gnu adapter.
merged branch pborreli/sun-typos (PR #5858)

This PR was merged into the master branch.

Commits
-------

a7ce6be Fixed typos

Discussion
----------

Fixed typos
merged branch jfsimon/issue-5851 (PR #5859)

This PR was merged into the master branch.

Commits
-------

2817a47 [Finder] Fixed filename containing space bug in gnu adapter.
9bf7cb0 [Finder] Added filename containing space to tests.

Discussion
----------

[Finder] Fixed filename containing space bug in gnu find adapter.

Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes: #5851

`GNU find` adapter now uses `cut` instead of `awk`.
merged branch niklasf/binary-file-response (PR #4546)

This PR was merged into the master branch.

Commits
-------

2f7bbbf [HttpFoundation] Added BinaryFileResponse.

Discussion
----------

[2.2] [HttpFoundation] Added BinaryFileResponse.

Another stab at #3602, based on @stealth35's code at https://gist.github.com/1472230.

- Move things around a little, clean things up, looking how it has been done in StreamedResponse.
- Add tests.
- Make functions chainable.
- Add a flag whether or not to trust the X-Sendfile-Type header.

---------------------------------------------------------------------------

by Partugal at 2012-06-10T19:56:43Z

What about support X-Accel-Redirect (nginx)?

---------------------------------------------------------------------------

by niklasf at 2012-06-10T20:41:10Z

@Partugal: So we support X-Sendfile-Type to pick the X-Sendfile header. What else would be needed to support X-Accel-Redirect (which we should definitely do)?

---------------------------------------------------------------------------

by Partugal at 2012-06-10T21:29:41Z

@niklasf Because nginx not use full file path, this need X-Accel-Mapping header (http://rack.rubyforge.org/doc/Rack/Sendfile.html)

---------------------------------------------------------------------------

by niklasf at 2012-06-10T22:45:38Z

@Partugal: Alright. Doing such a substitution now. Also added a test for that.

---------------------------------------------------------------------------

by stealth35 at 2012-06-11T07:47:35Z

I think the MIME should be base on the extensions map, for an example with `xlsx` that send an `application/zip` or a `xlsx` file MIME is `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`

Client to server : Reverve MIME => libmagic
Server to client : MIME => MIME map

---------------------------------------------------------------------------

by niklasf at 2012-06-11T14:40:00Z

@partugal: Thanks! Also added tests. Any e-mail you want to have in your credits?

---------------------------------------------------------------------------

by niklasf at 2012-06-11T14:41:39Z

@stealth35: Yeah ... makes sense. How would I get that information?

---------------------------------------------------------------------------

by stealth35 at 2012-06-11T14:47:36Z

use the `Symfony\Component\HttpFoundation\File\Mimetype\MimeTypeExtensionGuesser` it's the same map as Apache
and if the extension don't exists use `$this->getMimeType` and finaly `application/octet-stream`

---------------------------------------------------------------------------

by Partugal at 2012-06-11T15:46:41Z

@niklasf Thanks you for your work
If needed you may use linniksa@gmail.com

---------------------------------------------------------------------------

by niklasf at 2012-06-14T10:58:19Z

@stealth35: Sorry. I have to ask again.
 - So the first step would be using the map in `MimeTypeExtensionGuesser`? I don't see how I can access that, because the `guess()` method it has, is for guessing extensions from mime types, not the reverse.
 - Then, by `$this->getMimeType` you mean the getMimeType() method of the file? Sounds good.
 - `application/octet-stream` as the fallback. Alright.

---------------------------------------------------------------------------

by stealth35 at 2012-06-14T11:00:33Z

Yeah sorry `MimeTypeExtensionGuesser` is for getting an extension with the Mime, forget about this, i'll take care aboute all MIME intégration later

---------------------------------------------------------------------------

by niklasf at 2012-06-14T13:12:22Z

@stealth35: Awesome. Thanks a lot.

---------------------------------------------------------------------------

by jalliot at 2012-08-07T20:53:54Z

@niklasf You should backport the changes from 532334d23dd196a42df48da1ff439549b608cfc1 and 3f51bc0a3d391bddc2bdb06f16b3125ad6ceafae

---------------------------------------------------------------------------

by niklasf at 2012-08-07T21:07:10Z

@jalliot Thanks. Fixed.
[HttpKernel] added some more HTTP exceptions
merged branch ramsey/feature/additional-http-exceptions (PR #5312)

This PR was squashed before being merged into the master branch (closes #5312).

Commits
-------

e0c4d99 [HttpKernel] Additional HTTP exceptions

Discussion
----------

[HttpKernel] Additional HTTP exceptions

I wanted to continue using exceptions for many other types of HTTP 4xx and 5xx status codes, particularly because I like the notion that I can trap the exception based on the type, rather than inspecting HttpException to see what status code it contains. I've decided to contribute these back to the Symfony HttpKernel component, in case others find them useful.

* Bug fix: no
* Feature addition: yes
* Backwards compatibility break: no
* Symfony2 tests pass: yes
* Fixes the following tickets: -
* Todo: -
* License of the code: MIT
* Documentation PR: n/a

This pull request provides the following new HttpKernel Exceptions:

Exception                          | Applicable HTTP Status Code
---------------------------------- | ---------------------------------------
BadRequestHttpException            | `400 Bad Request`
ConflictHttpException              | `409 Conflict`
GoneHttpException                  | `410 Gone`
InternalServerErrorHttpException   | `500 Internal Server Error`
LengthRequiredHttpException        | `411 Length Required`
NotAcceptableHttpException         | `406 Not Acceptable`
PreconditionFailedHttpException    | `412 Precondition Failed`
PreconditionRequiredHttpException  | `428 Precondition Required`†
ServiceUnavailableHttpException    | `503 Service Unavailable`
TooManyRequestsHttpException       | `429 Too Many Requests`†
UnauthorizedHttpException          | `401 Unauthorized`
UnsupportedMediaTypeHttpException  | `415 Unsupported Media Type`

All the tests have been placed in the FlattenExceptionTest, since that's where the previous status code and method tests for HttpException exceptions are located, but I can move them to a more logical location, if needed.

† These codes have been included from [RFC 6585, Additional HTTP Status Codes](http://tools.ietf.org/html/rfc6585).

---------------------------------------------------------------------------

by stof at 2012-08-21T23:10:45Z

I would remove the InternalServerError one, as you get a 500 for any non-http exception anyway

---------------------------------------------------------------------------

by stof at 2012-08-21T23:11:34Z

and please rebase your branch to get rid of the merge commit at the beginning of your PR

---------------------------------------------------------------------------

by ramsey at 2012-10-03T20:22:59Z

@stof Can you provide some pointers on how to get rid of the merge commit through a rebase? I generally avoid rebase, so doing this is fairly new to me. I realize that what created the commit was a non-fast-forward merge, so I just need to understand how to get it to apply merges cleanly without creating merge commits like that. Thanks!

---------------------------------------------------------------------------

by alexandresalome at 2012-10-04T07:14:00Z

@ramsey

    # suppose you are on branch-feature
    # given origin is the symfony repository
    git pull --rebase origin/master

    # equivalent to
    git fetch origin
    git rebase origin/master

If you want to rebase your branch on 2.1:

    git pull --rebase origin/2.1

---------------------------------------------------------------------------

by stof at 2012-10-04T18:52:22Z

@ramsey http://symfony.com/doc/current/contributing/code/patches.html#rework-your-patch for the documentation about the way to do it

---------------------------------------------------------------------------

by stof at 2012-10-13T20:44:26Z

@ramsey ping

---------------------------------------------------------------------------

by fabpot at 2012-10-29T09:47:36Z

I'm going to finish this PR, but #5862 should be merged first.

---------------------------------------------------------------------------

by ramsey at 2012-10-29T15:36:31Z

Sorry I've been sitting on this for so long. I haven't had time to figure out how to get rid of the merge commit, as @stof requested. That's the only outstanding issue here, as far as I know.

---------------------------------------------------------------------------

by fabpot at 2012-10-29T15:47:54Z

I can see another issue. For some HTTP codes, you can/should/must add some headers or some content (like for the 406 status code).

Don't worry about the merge commit or the rebasing, I will take care of that myself when merging the PR.

---------------------------------------------------------------------------

by ramsey at 2012-10-29T16:05:04Z

I don't know what header is required for the 406 status code. RFC 2616 doesn't specify one. It does say "the response should include an entity containing a list of available entity characteristics and locations."

In other exceptions, such as UnauthorizedHttpException, TooManyRequestsHttpException, and ServiceUnavailableException, I did provide the required headers.

On Monday, October 29, 2012 at 10:48 AM, Fabien Potencier wrote:

> I can see another issue. For some HTTP codes, you can/should/must add some headers or some content (like for the 406 status code).
> Don't worry about the merge commit or the rebasing, I will take care of that myself when merging the PR.
>
> —
> Reply to this email directly or view it on GitHub (https://github.com/symfony/symfony/pull/5312#issuecomment-9871877).
>
>
>
[HttpKernel] fixed some broken tests