gapple/structured-headers

This package is abandoned and no longer maintained. The author suggests using the gapple/structured-fields package instead.

Library for Structured Field Values for HTTP

v2.3.1 2025-02-03 10:09 UTC

README

Parser and serializer for the Structured Field Values for HTTP specification.

Build Status Code Coverage Latest Release Packagist Downloads

Installation

Using composer:

composer require gapple/structured-fields

API

The Parser class provides static methods to convert a header string to structured data.
If the string cannot be parsed, a ParseException is thrown.

Parser::parseItem(string): Item;
Parser::parseList(string): OuterList;
Parser::parseDictionary(string): Dictionary;

The Serializer class provides static methods to convert structured data to a header string.
If the input cannot be serialized, a SerializeException is thrown.

Serializer::serializeItem(mixed, ?object): string;
Serializer::serializeList(iterable): string;
Serializer::serializeDictionary(object): string;

Special Types

Serializer will accept string or any Stringable object as an Item value, but will throw a SerializeException if it contains any characters outside the printable ASCII range.

Special Item types must use a decorating class in order to be serialized correctly:

  • Byte Sequences (\gapple\StructuredFields\Bytes)
    A string containing binary data.

    Serializer and Parser handle base64 encoding and decoding the provided string.

  • Display Strings (\gapple\StructuredFields\DisplayString)
    A string that includes Unicode characters.

    Serializer and Parser handle percent-encoding and decoding non-ascii characters.

  • Tokens (\gapple\StructuredFields\Token)
    A short textual word with a restricted character set.

  • Dates (\gapple\StructuredFields\Date)
    An integer timestamp

    Serializer accepts any object that implements \DateTimeInterface.
    Parser will return a \gapple\StructuredFields\Date object.