. /** * @file * @author Aaron Fiore (Founder, Evergreen Crypto LLC) * @since docker-finance 1.0.0 */ //! @since docker-finance 1.0.0 namespace docker_finance\prices { require_once('prices/internal/base.php'); require_once('prices/internal/prices/crypto.php'); require_once('utils/utils.php'); use docker_finance\utils as utils; /** * @brief Price fetcher API * @details Instantiates and executes API fetcher * @ingroup php_API * @since docker-finance 1.0.0 */ final class Fetch extends API { private mixed $api; //!< Internal API public function __construct(utils\Env $env) { parent::__construct($env); } //! @brief Fetch executor public function fetch(): void { $upstream = $this->get_env()->get_env('API_PRICES_API'); switch ($upstream) { case 'coingecko': $this->api = new internal\prices\CoinGecko($this->get_env()); break; case 'mobula': $this->api = new internal\prices\Mobula($this->get_env()); break; default: utils\CLI::throw_fatal( "unsupported upstream API '{$upstream}' for interal API" ); break; } // Execute assert(isset($this->api)); $this->api->fetch(); } } } // namespace docker_finance\prices # vim: sw=4 sts=4 si ai et