Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
webbingbrasil/core-module / Providers / RoutingServiceProvider.php
Size: Mime:
<?php

namespace Modules\Core\Providers;

use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Routing\Router;
use Modules\Core\Facades\LocalizationFacade as Localization;
use Modules\Core\Services\SocketRouter;
use Ratchet\App as Socket;

abstract class RoutingServiceProvider extends ServiceProvider
{
    /**
     * The root namespace to assume when generating URLs to actions.
     *
     * @var string
     */
    protected $namespace = '';

    /**
     * Define your route model bindings, pattern filters, etc.
     *
     * @param  \Illuminate\Routing\Router $router
     * @return void
     */
    public function boot(Router $router)
    {
        parent::boot($router);
    }

    /**
     * Define the routes for the application.
     *
     * @param  \Illuminate\Routing\Router $router
     * @return void
     */
    public function map(Router $router, SocketRouter $socketRouter)
    {
        $router->group(['namespace' => $this->namespace], function (Router $router) {
            $this->loadApiRoutes($router);
        });

        $router->group(['namespace' => $this->namespace, 'prefix' => Localization::setLocale(), 'middleware' => ['localeSessionRedirect', 'localizationRedirect']], function (Router $router) {
            $this->loadBackendRoutes($router);
            $this->loadFrontendRoutes($router);
        });

        $this->loadSocketRoutes($socketRouter);
    }

    /**
     * @param Router $router
     */
    private function loadApiRoutes(Router $router)
    {
        $api = $this->getApiRoute();

        if ($api && file_exists($api)) {
            $router->group(['namespace' => 'Api', 'prefix' => 'api', 'middleware' => config('core.middleware.api', [])], function (Router $router) use ($api) {
                require $api;
            });
        }
    }

    /**
     * @return string
     */
    abstract protected function getApiRoute();

    /**
     * @param Router $router
     */
    private function loadBackendRoutes(Router $router)
    {
        $backend = $this->getBackendRoute();

        if ($backend && file_exists($backend)) {
            $router->group(['namespace' => 'Admin', 'prefix' => config('core.admin-prefix'), 'middleware' => config('core.middleware.backend', ['web'])], function (Router $router) use ($backend) {
                require $backend;
            });
        }
    }

    /**
     * @return string
     */
    abstract protected function getBackendRoute();

    /**
     * @param Router $router
     */
    private function loadFrontendRoutes(Router $router)
    {
        $frontend = $this->getFrontendRoute();

        if ($frontend && file_exists($frontend)) {
            $router->group(['middleware' => config('core.middleware.frontend', ['web'])], function (Router $router) use ($frontend) {
                require $frontend;
            });
        }
    }

    /**
     * @return string
     */
    abstract protected function getFrontendRoute();

    /**
     * @param Router $router
     */
    private function loadSocketRoutes(SocketRouter $router)
    {
        $api = $this->getSocketRoute();

        if ($api && file_exists($api)) {
            $router->add(function (Socket $socket) use ($api) {
                require $api;
            });
        }
    }

    /**
     * @return string
     */
    protected function getSocketRoute()
    {
        return false;
    }
}