Esempio n. 1
0
<?php

require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'Bootstrap.php';
use Hoa\Dispatcher;
use Hoa\File;
use Hoa\Mime;
use Hoa\Router;
$router = new Router\Http();
$router->any('a', '.*', function (Dispatcher\Kit $_this) {
    $uri = $_this->router->getURI();
    $file = __DIR__ . DS . $uri;
    if (!empty($uri) && true === file_exists($file)) {
        $stream = new File\Read($file);
        try {
            $mime = new Mime($stream);
            $_mime = $mime->getMime();
        } catch (Mime\Exception $e) {
            $_mime = 'text/plain';
        }
        header('Content-Type: ' . $_mime);
        echo $stream->readAll();
        return;
    }
    require 'index.php';
});
$dispatcher = new Dispatcher\Basic();
$dispatcher->dispatch($router);
Esempio n. 2
0
        $groupId = getmygid();
        require SABRE_KATANA_PREFIX . '/resource/view/install_permissions.html';
        return;
    }
}
$url = $request->getUrl();
$query = '';
/**
 * We compute asynchronous tasks from the installation page.
 * They have the following form: install?/<command>
 *
 * Else, we print the installation page.
 */
if (false !== ($pos = strpos($url, '?'))) {
    $response->addHeader('Content-Type', 'application/json');
    $router = new Router\Http();
    $router->post('baseurl', '/(?-i)baseurl', function () use($request, $response) {
        $response->setBody(json_encode(Installer::checkBaseUrl($request->getBodyAsString())));
        HTTP\Sapi::sendResponse($response);
    })->post('password', '/(?-i)password', function () use($request, $response) {
        $response->setBody(json_encode(Installer::checkPassword($request->getBodyAsString())));
        HTTP\Sapi::sendResponse($response);
    })->post('email', '/(?-i)email', function () use($request, $response) {
        $response->setBody(json_encode(Installer::checkEmail($request->getBodyAsString())));
        HTTP\Sapi::sendResponse($response);
    })->post('database', '/(?-i)database', function () use($request, $response) {
        $payload = json_decode($request->getBodyAsString(), true);
        $out = false;
        if (is_array($payload)) {
            try {
                $out = Installer::checkDatabase($payload);
Esempio n. 3
0
<?php

require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'Bootstrap.php';
use Hoa\Exception;
use Hoa\Dispatcher;
use Hoa\Router;
Exception\Error::enableErrorHandler();
Exception\Idle::enableUncaughtHandler();
$dispatcher = new Dispatcher\ClassMethod(['synchronous.call' => 'Application\\Resource\\(:call:U:)', 'synchronous.able' => '(:%variables._method:U:)', 'asynchronous.call' => '(:%synchronous.call:)', 'asynchronous.able' => '(:%synchronous.able:)']);
$router = new Router\Http();
$router->_get('_resource', '/Static/(?<resource>)')->get('dates', '/api/dates(?:/(?<limit>\\d+))?', 'Dates')->get('discography', '/api/discography', 'Discography')->get('album', '/api/album/(?<albumId>.+)', 'Album')->get('videos', '/api/videos', 'Videos')->get('fallback', '/.*', 'Fallback');
$dispatcher->dispatch($router);
Esempio n. 4
0
 /**
  * Interprete a stream as XYL.
  *
  * @param   \Hoa\Stream\IStream\In     $in              Stream to interprete
  *                                                      as XYL.
  * @param   \Hoa\Stream\IStream\Out    $out             Stream for rendering.
  * @param   \Hoa\Xyl\Interpreter       $interpreter     Interpreter.
  * @param   \Hoa\Router\Http           $router          Router.
  * @param   mixed                      $entityResolver  Entity resolver.
  * @param   array                      $parameters      Parameters.
  * @return  void
  * @throws  \Hoa\Xyl\Exception
  * @throws  \Hoa\Xml\Exception
  * @throws  \Hoa\Xml\Exception\NamespaceMissing
  */
 public function __construct(Stream\IStream\In $in, Stream\IStream\Out $out, Interpreter $interpreter, Router\Http $router = null, $entityResolver = null, array $parameters = [])
 {
     parent::__construct('\\Hoa\\Xyl\\Element\\Basic', $in, true, $entityResolver);
     if (false === $this->namespaceExists(self::NAMESPACE_ID)) {
         throw new Exception('The XYL file %s has no XYL namespace (%s) declared.', 0, [$in->getStreamName(), self::NAMESPACE_ID]);
     }
     if (null === self::$_parameters) {
         self::$_parameters = new Core\Parameter($this, ['theme' => 'classic'], ['theme' => '(:theme:lU:)']);
         $this->getParameters()->setParameters($parameters);
     }
     $this->_i = self::$_ci++;
     $this->_data = new Core\Data();
     $this->_out = $out;
     $this->_interpreter = $interpreter;
     $this->_router = $router;
     $this->_mowgli = $this->getStream()->readDOM()->ownerDocument;
     switch (strtolower($this->getName())) {
         case 'document':
             $this->_type = self::TYPE_DOCUMENT;
             break;
         case 'definition':
             $this->_type = self::TYPE_DEFINITION;
             break;
         case 'overlay':
             $this->_type = self::TYPE_OVERLAY;
             break;
         case 'fragment':
             $this->_type = self::TYPE_FRAGMENT;
             break;
         default:
             throw new Exception('Unknown document <%s>.', 1, $this->getName());
     }
     $this->useNamespace(self::NAMESPACE_ID);
     $protocol = Core::getInstance()->getProtocol();
     $protocol['Library'][] = new _Protocol('Xyl[' . $this->_i . ']', 'Xyl' . DS . 'Interpreter' . DS . $this->_interpreter->getResourcePath());
     if (null !== $router && false === $router->ruleExists('_resource')) {
         $router->_get('_resource', '/(?<theme>)/(?<resource>)');
     }
     return;
 }
Esempio n. 5
0
// Fichier de config
require_once 'config.php';
// Le script va afficher du français
if (PHP_OS == 'Linux') {
    setlocale(LC_ALL, 'fr_FR.UTF-8');
} else {
    setlocale(LC_ALL, 'French');
}
// Déclaration des NS utilisés
use Hoa\Core;
use Hoa\Dispatcher;
use Hoa\Router;
// Activation des erreurs
Core::enableErrorHandler();
Core::enableExceptionHandler();
// Mise en place du dispatcher
$dispatcher = new Dispatcher\ClassMethod(['synchronous.call' => 'Application\\Controller\\(:call:U:)', 'asynchronous.able' => '(:%synchronous.able:)']);
// Connection à la base de donnée
Hoa\Database\Dal::initializeParameters(array('connection.list.default.dal' => Hoa\Database\Dal::PDO, 'connection.list.default.dsn' => SQL_DNS, 'connection.list.default.username' => SQL_USER, 'connection.list.default.password' => SQL_PWD, 'connection.list.default.options' => array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"), 'connection.autoload' => 'default'));
// Utilisation d'un Kit personnalisé
$dispatcher->setKitName('Application\\Dispatcher\\Kit');
$router = new Router\Http();
// Déclaration des routes
$router->get('Home', '/', 'Index', 'Index')->post('Login', '/', 'Index', 'Login')->get('Logout', '/Logout', 'Index', 'Logout');
// Here we go !
try {
    $dispatcher->dispatch($router);
} catch (Hoa\Dispatcher\Exception $e) {
    echo $e->getMessage();
    //echo 'Page Introuvable';
}
Esempio n. 6
0
 protected function _unroute($id, $pattern, array $variables, $allowEmpty = true)
 {
     $variables = array_map('rawurlencode', $variables);
     return parent::_unroute($id, $pattern, $variables, $allowEmpty);
 }
Esempio n. 7
0
<?php

use Hoa\Router;
$router = new Router\Http();
$router->get('home', '/')->get('page', '/(?<pathname>[\\w\\d\\-_]+)')->get('post', '/p/(?<pathname>[\\w\\d\\-_]+)')->_get('_resource', '/(?<resource>)');
return $router;
Esempio n. 8
0
<?php

use Hoa\Router;
$router = new Router\Http();
$router->get('c', '(?<vendor>)/(?<chapter>)\\.html')->get('hack', '(?<chapter>)\\.html')->get('full', '/(?<vendor>)/(?<chapter>)\\.html')->_get('literature', 'http://hoa-project.net/Literature\\.html')->_get('learn', 'http://hoa-project.net/Literature/Learn/(?<chapter>)\\.html')->get('_resource', 'http://static.hoa-project.net/(?<resource>)')->_get('central_resource', 'http://central.hoa-project.net/Resource/(?<path>)')->_get('board', 'https://waffle.io/hoaproject/(?<repository>)')->_get('git', 'http://git.hoa-project.net/(?<repository>).git/')->_get('github', 'https://github.com/hoaproject/(?<repository>)')->_get('research', 'http://hoa-project.net/Literature/Research/(?<article>[\\w\\d]+)\\.pdf', 'Literature\\Research')->_get('event', 'http://hoa-project.net/Event/(?<event>\\w+)\\.html', 'Generic')->_get('keynote', 'http://keynote.hoa-project.net/(?<keynote>)');