Merge pull request #208 into master

07b7105 container: fetch: refactor for php (Aaron Fiore)
This commit was merged in pull request #208.
This commit is contained in:
2025-08-19 10:38:09 -07:00
18 changed files with 88 additions and 78 deletions

View File

@@ -27,11 +27,11 @@
namespace docker_finance\blockchains
{
require_once('blockchains/internal/base.php');
require_once('blockchains/internal/blockchains/algorand.php');
require_once('blockchains/internal/blockchains/ethereum.php');
require_once('blockchains/internal/blockchains/tezos.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'blockchains/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'blockchains/internal/blockchains/algorand.php');
require_once(__DFI_PHP_ROOT__ . 'blockchains/internal/blockchains/ethereum.php');
require_once(__DFI_PHP_ROOT__ . 'blockchains/internal/blockchains/tezos.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\utils as utils;

View File

@@ -27,7 +27,7 @@
namespace docker_finance\blockchains\internal
{
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\utils as utils;
@@ -266,7 +266,7 @@ namespace docker_finance\blockchains\internal
namespace docker_finance\blockchains
{
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\utils as utils;

View File

@@ -2,7 +2,7 @@
// docker-finance | modern accounting for the power-user
//
// Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
// Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -27,8 +27,8 @@
namespace docker_finance\blockchains\internal\blockchains\algorand
{
require_once('blockchains/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'blockchains/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\blockchains\internal as internal;
use docker_finance\utils as utils;
@@ -270,8 +270,8 @@ namespace docker_finance\blockchains\internal\blockchains\algorand
namespace docker_finance\blockchains\internal\blockchains
{
require_once('blockchains/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'blockchains/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\blockchains\internal as internal;
use docker_finance\utils as utils;

View File

@@ -27,8 +27,8 @@
namespace docker_finance\blockchains\internal\blockchains\ethereum
{
require_once('blockchains/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'blockchains/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\blockchains\internal as internal;
use docker_finance\utils as utils;
@@ -322,8 +322,8 @@ namespace docker_finance\blockchains\internal\blockchains\ethereum
namespace docker_finance\blockchains\internal\blockchains
{
require_once('blockchains/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'blockchains/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\blockchains\internal as internal;
use docker_finance\utils as utils;

View File

@@ -2,7 +2,7 @@
// docker-finance | modern accounting for the power-user
//
// Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
// Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -27,8 +27,8 @@
namespace docker_finance\blockchains\internal\blockchains\tezos
{
require_once('blockchains/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'blockchains/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\blockchains\internal as internal;
use docker_finance\utils as utils;
@@ -265,8 +265,8 @@ namespace docker_finance\blockchains\internal\blockchains\tezos
namespace docker_finance\blockchains\internal\blockchains
{
require_once('blockchains/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'blockchains/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\blockchains\internal as internal;
use docker_finance\utils as utils;

View File

@@ -2,7 +2,7 @@
// docker-finance | modern accounting for the power-user
//
// Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
// Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -27,10 +27,10 @@
namespace docker_finance\exchanges
{
require_once('exchanges/internal/base.php');
require_once('exchanges/internal/exchanges/coinbase.php');
require_once('exchanges/internal/exchanges/gemini.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'exchanges/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'exchanges/internal/exchanges/coinbase.php');
require_once(__DFI_PHP_ROOT__ . 'exchanges/internal/exchanges/gemini.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\utils as utils;

View File

@@ -2,7 +2,7 @@
// docker-finance | modern accounting for the power-user
//
// Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
// Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -27,7 +27,7 @@
namespace docker_finance\exchanges\internal
{
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\utils as utils;
@@ -132,7 +132,7 @@ namespace docker_finance\exchanges\internal
namespace docker_finance\exchanges
{
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\utils as utils;

View File

@@ -2,7 +2,7 @@
// docker-finance | modern accounting for the power-user
//
// Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
// Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -27,8 +27,8 @@
namespace docker_finance\exchanges\internal\exchanges\bittrex
{
require_once('exchanges/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'exchanges/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\utils as utils;
@@ -249,8 +249,8 @@ namespace docker_finance\exchanges\internal\exchanges\bittrex
namespace docker_finance\exchanges\internal\exchanges
{
require_once('exchanges/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'exchanges/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
/**
* @brief Facade for Bittrex implementation

View File

@@ -2,7 +2,7 @@
// docker-finance | modern accounting for the power-user
//
// Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
// Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -27,8 +27,8 @@
namespace docker_finance\exchanges\internal\exchanges\celsius
{
require_once('exchanges/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'exchanges/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\utils as utils;
@@ -170,8 +170,8 @@ namespace docker_finance\exchanges\internal\exchanges\celsius
namespace docker_finance\exchanges\internal\exchanges
{
require_once('exchanges/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'exchanges/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
/**
* @brief Facade for Celsius implementation

View File

@@ -2,7 +2,7 @@
// docker-finance | modern accounting for the power-user
//
// Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
// Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -27,9 +27,8 @@
namespace docker_finance\exchanges\internal\exchanges\coinbase_pro
{
require_once('php/vendor/autoload.php'); //!< mocking-magician/coinbase-pro-sdk
require_once('exchanges/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'exchanges/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use MockingMagician\CoinbaseProSdk\CoinbaseFacade;
use MockingMagician\CoinbaseProSdk\Contracts\Api\ApiInterface;
@@ -275,8 +274,8 @@ namespace docker_finance\exchanges\internal\exchanges\coinbase_pro
namespace docker_finance\exchanges\internal\exchanges
{
require_once('exchanges/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'exchanges/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
/**
* @brief Facade for Coinbase Pro implementation

View File

@@ -27,9 +27,8 @@
namespace docker_finance\exchanges\internal\exchanges\coinbase
{
require_once('php/vendor/autoload.php'); //!< ccxt
require_once('exchanges/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'exchanges/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\utils as utils;
@@ -279,8 +278,8 @@ namespace docker_finance\exchanges\internal\exchanges\coinbase
namespace docker_finance\exchanges\internal\exchanges
{
require_once('exchanges/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'exchanges/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
/**
* @brief Facade for Coinbase implementation

View File

@@ -27,9 +27,8 @@
namespace docker_finance\exchanges\internal\exchanges\gemini
{
require_once('php/vendor/autoload.php'); //!< ccxt
require_once('exchanges/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'exchanges/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\utils as utils;
use DateTime; // PHP
@@ -490,8 +489,8 @@ namespace docker_finance\exchanges\internal\exchanges\gemini
namespace docker_finance\exchanges\internal\exchanges
{
require_once('exchanges/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'exchanges/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
/**
* @brief Facade for Gemini implementation

View File

@@ -2,7 +2,7 @@
// docker-finance | modern accounting for the power-user
//
// Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
// Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -25,12 +25,21 @@
//! @since docker-finance 1.0.0
namespace {
//! Dependencies (via composer)
define('__DFI_PHP_DEPS__', getenv('__DFI_PHP_DEPS__') . '/');
require_once(__DFI_PHP_DEPS__ . 'vendor/autoload.php');
//! docker-finance `fetch` impl
define('__DFI_PHP_ROOT__', getenv('__DFI_PHP_ROOT__') . '/');
}
namespace docker_finance
{
require_once('blockchains/fetch.php');
require_once('exchanges/fetch.php');
require_once('prices/fetch.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'blockchains/fetch.php');
require_once(__DFI_PHP_ROOT__ . 'exchanges/fetch.php');
require_once(__DFI_PHP_ROOT__ . 'prices/fetch.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
/**
* @brief API executor

View File

@@ -2,7 +2,7 @@
// docker-finance | modern accounting for the power-user
//
// Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
// Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -27,9 +27,9 @@
namespace docker_finance\prices
{
require_once('prices/internal/base.php');
require_once('prices/internal/prices/crypto.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'prices/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'prices/internal/prices/crypto.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\utils as utils;

View File

@@ -2,7 +2,7 @@
// docker-finance | modern accounting for the power-user
//
// Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
// Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -27,7 +27,7 @@
namespace docker_finance\prices\internal
{
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\utils as utils;
@@ -443,7 +443,7 @@ namespace docker_finance\prices\internal
namespace docker_finance\prices
{
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\utils as utils;

View File

@@ -2,7 +2,7 @@
// docker-finance | modern accounting for the power-user
//
// Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
// Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -27,8 +27,8 @@
namespace docker_finance\prices\internal\prices\crypto
{
require_once('prices/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'prices/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\prices\internal as internal;
use docker_finance\utils as utils;
@@ -239,8 +239,8 @@ namespace docker_finance\prices\internal\prices\crypto
namespace docker_finance\prices\internal\prices
{
require_once('prices/internal/base.php');
require_once('utils/utils.php');
require_once(__DFI_PHP_ROOT__ . 'prices/internal/base.php');
require_once(__DFI_PHP_ROOT__ . 'utils/utils.php');
use docker_finance\utils as utils;

View File

@@ -2,7 +2,7 @@
// docker-finance | modern accounting for the power-user
//
// Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
// Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -27,8 +27,6 @@
namespace docker_finance\utils
{
require_once('php/vendor/autoload.php'); //!< JsonCsv
/**
* @brief Environment mapper
* @details From CLI<->PHP

View File

@@ -833,7 +833,13 @@ function lib_fetch::__fetch_exec()
[ -z "$_type" ] && lib_utils::die_fatal
[ -z "$_subtype" ] && lib_utils::die_fatal
local _dir="${DOCKER_FINANCE_CONTAINER_REPO}/src/finance/lib/internal/fetch"
# `fetch` deps location (PHP)
local _deps="/usr/local/lib/php"
# `fetch` impl location (PHP)
local _impl="${DOCKER_FINANCE_CONTAINER_REPO}/src/finance/lib/internal/fetch"
# NOTE: must reset IFS after executing
local _ifs="$IFS"
IFS=' '
@@ -857,14 +863,14 @@ function lib_fetch::__fetch_exec()
# TODO: remove no-limit after internal fetching writes per-paginated instead of per-fetch
lib_utils::deps_check "php"
_exec+=("php" "-d" "memory_limit=\"-1\"" "-d" "include_path=\"/usr/local/lib:${_dir}\"")
_exec+=("php" "-d" "memory_limit=\"-1\"" "-d" "include_path=\"${_deps}:${_impl}\"")
lib_utils::print_debug "${_exec[@]}"
#
# Execute fetch
#
"${_exec[@]}" "${_dir}/fetch.php" "$_type" "$_subtype"
__DFI_PHP_DEPS__="${_deps}" __DFI_PHP_ROOT__="${_impl}" "${_exec[@]}" "${_impl}/fetch.php" "$_type" "$_subtype"
IFS="$_ifs"
}