- <?php
- require_once "lib/compra.php";
- require_once "lib/sheen.php";
- require_once "lib/beggar.php";
- use compra\Compra;
- use sheen\View;
- use beggar\Request;
- function templatize($req, $res) {
- $title = isset($res->title) ? $res->title : "PBBG";
- $player = isset($req->player) ? $req->player : NULL;
- $layout = new View("layout", compact("title", "player"));
- $layout->render(array(), $res->view->render(compact("player"), NULL, TRUE));
- }
- Compra::except("beggar\Exception", function($req, $res, $e) {
- $error = "Our web service seems to be malfunctioning. Please bear with us.";
- $res->view = new View("error", compact("error"));
- $res->title = "Error";
- templatize($req, $res);
- });
- get("/", function($req, $res) {
- if (isset($req->player)) {
- $res->title = "Headquarters";
- $res->view = new View("home");
- }
- else {
- $res->title = "Welcome";
- $res->view = new View("index");
- }
- });
- get("/login", function($req, $res) {
- if (isset($req->player)) {
- $res->redirect("/");
- }
- $res->title = "Login";
- $res->view = new View("login");
- });
- get("/logout", function($req, $res) {
- session_destroy();
- $res->redirect("/");
- });
- post("/login", function($req, $res) {
- $username = trim($_POST['username']);
- $password = trim($_POST['password']);
- $api = new Request($username, $password);
- try {
- $api->players->self->_get();
- $_SESSION['credentials'] = "{$username}:{$password}";
- $res->redirect("/");
- }
- catch (beggar\ForbiddenException $e) {
- $error = $e->getMessage();
- }
- $res->title = "Login";
- $res->view = new View("login", compact("error"));
- });
- get("/battle", function($req, $res) {
- $players = $req->ws->players->_get();
- $res->title = "Battle";
- $res->view = new View("battle", compact("players"));
- });
- Compra::before(function($req, $res) {
- session_start();
- if (isset($_SESSION['credentials'])) {
- // TODO: Store session data in Redis or memcached
- list($username, $password) = explode(":", $_SESSION['credentials']);
- $req->ws = new Request($username, $password);
- $req->player = (object)$req->ws->players->self->_get();
- }
- });
- Compra::after(function($req, $res) {
- templatize($req, $res);
- });