Skip to content
This repository was archived by the owner on Jan 29, 2020. It is now read-only.

Add support for Responses that produce a HTTP/1.1 chunked stream #261

@stuartherbert

Description

@stuartherbert

HTTP/1.1 provides 'Transfer-encoding: chunked' for sending a stream of data from the server.

Zend Diactoros currently doesn't seem to provide out-of-the-box support for this.

  • There's no existing Response that sets the required headers for you.
  • There's no existing implementation of StreamInterface that supports dynamic content and is compatible with the requirements of SapiStreamEmitter.

Possible solution for out-of-the-box support could be:

  • Add a DynamicStreamInterface interface that extends StreamInterface, for type-hinting in a moment
  • Add a GeneratorStream class that implements DynamicStreamInterface, and its read() method gets the required data from a PHP generator
  • Add another class that implements DynamicStreamInterface, and its read() method gets the required data from a PHP callback
  • Add a StreamResponse class that requires a DynamicStreamInterface in the constructor, sets the necessary headers for chunked stream delivery

It leaves questions around handling $maxBufferLength, and where the code goes to write the actual chunked blocks (trait? helper class?).

I have to build a solution for this, and I'm happy to contribute it back to Diactoros, if we can agree a design :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions