<?php
/** @license MIT
 * Copyright 2017 J. King, Dustin Wilson et al.
 * See LICENSE and AUTHORS files for details */

declare(strict_types=1);
namespace JKingWeb\Arsse;

const BASE = __DIR__.DIRECTORY_SEPARATOR;
const NS_BASE = __NAMESPACE__."\\";

require_once BASE."vendor".DIRECTORY_SEPARATOR."autoload.php";
ignore_user_abort(true);
ini_set("memory_limit", "-1");
ini_set("max_execution_time", "0");
// FIXME: This is required by a dependency of Picofeed
error_reporting(\E_ALL & ~\E_DEPRECATED);

if (\PHP_SAPI === "cli") {
    // initialize the CLI; this automatically handles --help and --version else
    Arsse::$obj = new Factory;
    $cli = new CLI;
    // handle other CLI requests; some do not require configuration
    $exitStatus = $cli->dispatch();
    exit($exitStatus);
} else {
    // load configuration
    $conf = file_exists(BASE."config.php") ? new Conf(BASE."config.php") : new Conf;
    Arsse::load($conf);
    // handle Web requests
    $emitter = new \Laminas\HttpHandlerRunner\Emitter\SapiEmitter;
    $response = (new REST)->dispatch();
    $emitter->emit($response);
}