www.gusucode.com > Flarum PHP论坛 中文版 v0.1 beta7源码程序 > FlarumChina-master/vendor/flagrow/bazaar/src/Api/Controllers/FavoriteExtensionController.php

    <?php

namespace Flagrow\Bazaar\Api\Controllers;

use Flagrow\Bazaar\Api\Serializers\ExtensionSerializer;
use Flagrow\Bazaar\Repositories\ExtensionRepository;
use Flagrow\Bazaar\Search\FlagrowApi;
use Flarum\Api\Controller\AbstractResourceController;
use Flarum\Core\Exception\PermissionDeniedException;
use Flarum\Settings\SettingsRepositoryInterface;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document;

class FavoriteExtensionController extends AbstractResourceController
{

    public $serializer = ExtensionSerializer::class;
    /**
     * @var bool
     */
    private $connected;
    /**
     * @var ExtensionRepository
     */
    private $extensions;

    function __construct(FlagrowApi $api, SettingsRepositoryInterface $settings, ExtensionRepository $extensions)
    {
        $this->connected = $settings->get('flagrow.bazaar.connected') === '1';
        $this->extensions = $extensions;
    }

    /**
     * Get the data to be serialized and assigned to the response document.
     *
     * @param ServerRequestInterface $request
     * @param Document $document
     * @return mixed
     * @throws PermissionDeniedException
     * @throws \Exception
     */
    protected function data(ServerRequestInterface $request, Document $document)
    {
        if (!$this->connected) {
            throw new PermissionDeniedException("Bazaar not connected");
        }

        $response = $this->extensions->favorite(
            Arr::get($request->getQueryParams(), 'id'),
            Arr::get($request->getParsedBody(), 'favorite')
        );

        if ($response) {
            return $response;
        }

        throw new \Exception('Could not favorite, connection to service failed.');
    }
}