Proyectos de Subversion Moodle

Rev

Autoría | Ultima modificación | Ver Log |

<?php declare(strict_types=1);

namespace EduSharingApiClient;

/**
 * Class EduSharingHelperAbstract
 *
 * @author Torsten Simon  <simon@edu-sharing.net>
 */
abstract class EduSharingHelperAbstract
{
    public EduSharingHelperBase $base;

    /**
     * EduSharingHelperAbstract constructor
     *
     * @param EduSharingHelperBase $base
     */
    public function __construct(EduSharingHelperBase $base) {
        $this->base = $base;
    }

    /**
     * Function getRESTAuthenticationHeader
     *
     * Generates the header to use for a given ticket to authenticate with any edu-sharing api endpoint
     * @param string $ticket
     * The ticket, obtained by @getTicketForUser
     * @return string
     */
    public function getRESTAuthenticationHeader(string $ticket): string {
        return 'Authorization: EDU-TICKET ' . $ticket;
    }

    /**
     * Function getSignatureHeaders
     *
     * @param string $signString
     * @param string $accept
     * @param string $contentType
     * @return string[]
     */
    protected function getSignatureHeaders(string $signString, string $accept = 'application/json', string $contentType = 'application/json'): array {
        $ts        = time() * 1000;
        $toSign    = $this->base->appId . $signString . $ts;
        $signature = $this->sign($toSign);
        return [
            'Accept: ' . $accept,
            'Content-Type: ' . $contentType,
            'X-Edu-App-Id: ' . $this->base->appId,
            'X-Edu-App-Signed: ' . $toSign,
            'X-Edu-App-Sig: ' . $signature,
            'X-Edu-App-Ts: ' . $ts,
        ];
    }

    /**
     * Function sign
     *
     * @param string $toSign
     * @return string
     */
    protected function sign(string $toSign): string {
        return $this->base->sign($toSign);
    }
}