Index.php 1.52 KB
Newer Older
Ketan's avatar
Ketan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Magento\Swagger\Block;

use Magento\Framework\Phrase;
use Magento\Framework\View\Element\Template;
use Magento\Swagger\Api\Data\SchemaTypeInterface;

/**
 * Block for swagger index page
 *
 * @api
 *
 * @method SchemaTypeInterface[] getSchemaTypes()
 * @method bool hasSchemaTypes()
 * @method string getDefaultSchemaTypeCode()
 * @since 100.2.1
 */
class Index extends Template
{
    /**
     * @return mixed|string
     */
    private function getParamStore()
    {
        return $this->getRequest()->getParam('store') ?: 'all';
    }

    /**
     * @return SchemaTypeInterface|null
     */
    private function getSchemaType()
    {
        if (!$this->hasSchemaTypes()) {
            return null;
        }

        $schemaTypeCode = $this->getRequest()->getParam(
            'type',
            $this->getDefaultSchemaTypeCode()
        );

        if (!array_key_exists($schemaTypeCode, $this->getSchemaTypes())) {
            throw new \UnexpectedValueException(
                new Phrase('Unknown schema type supplied')
            );
        }

        return $this->getSchemaTypes()[$schemaTypeCode];
    }

    /**
     * @return string|null
     * @since 100.2.1
     */
    public function getSchemaUrl()
    {
        if ($this->getSchemaType() === null) {
            return null;
        }

        return rtrim($this->getBaseUrl(), '/') .
            $this->getSchemaType()->getSchemaUrlPath($this->getParamStore());
    }
}