src/Api/OpenAPI/Server/Api/ApiServer.php
<?php

/**
 * ApiServer.
 *
 * PHP version 8.1.1
 *
 * @category Class
 *
 * @author   OpenAPI Generator team
 *
 * @see     https://github.com/openapitools/openapi-generator
 */

/**
 * Catroweb API.
 *
 * API for the Catrobat Share Platform
 *
 * The version of the OpenAPI document: v1.6.0
 * Contact: webmaster@catrobat.org
 * Generated by: https://github.com/openapitools/openapi-generator.git
 */

/**
 * NOTE: This class is auto generated by the openapi generator program.
 * https://github.com/openapitools/openapi-generator
 * Do not edit the class manually.
 */

namespace OpenAPI\Server\Api;

/**
 * ApiServer Class Doc Comment.
 *
 * PHP version 8.1.1
 *
 * @category Class
 *
 * @author   OpenAPI Generator team
 *
 * @see     https://github.com/openapitools/openapi-generator
 */
class ApiServer
{
  private array $apis = [];

  /**
   * Adds an API handler to the server.
   *
   * @param string $api     An API name of the handle
   * @param mixed  $handler A handler to set for the given API
   */
  public function addApiHandler(string $api, $handler): void
  {
    if (isset($this->apis[$api])) {
      throw new \InvalidArgumentException('API has already a handler: '.$api);
    }

    $this->apis[$api] = $handler;
  }

  /**
   * Returns an API handler.
   *
   * @param string $api An API name of the handle
   *
   * @return mixed Returns a handler
   *
   * @throws \InvalidArgumentException When no such handler exists
   */
  public function getApiHandler(string $api)
  {
    if (!isset($this->apis[$api])) {
      throw new \InvalidArgumentException('No handler for '.$api.' implemented.');
    }

    return $this->apis[$api];
  }
}
