<?php

namespace App\Http\Headers;

//
// Details about Link headers and their use in WebSub is here:
//
// https://www.w3.org/TR/websub/#discovery
//
class Link
{
    private $relations = [];

    public function hub(string $uri)
    {
        $this->relate('hub', $uri);
    }

    public function next(string $uri)
    {
        $this->relate('next', $uri);
    }

    public function relate(string $relationType, string $uri)
    {
        array_push(
            $this->relations,
            [
                'uri' => $uri,
                'rel' => $relationType,
            ]
        );
    }

    public function self(string $uri)
    {
        $this->relate('self', $uri);
    }

    public function __toString() : string
    {
        return join(
            ', ',
            array_map(
                function ($relation) {
                    $uri = $relation['uri'];
                    $rel = $relation['rel'];
                    return "<$uri>; rel=\"$rel\"";
                },
                $this->relations
            )
        );
    }
}