 TextControl    /
                    textcontrol-reportingcloud
                      TextControl    /
                    textcontrol-reportingcloud
                
                            | 1 | <?php | ||
| 2 | declare(strict_types=1); | ||
| 3 | |||
| 4 | /** | ||
| 5 | * ReportingCloud PHP SDK | ||
| 6 | * | ||
| 7 | * PHP SDK for ReportingCloud Web API. Authored and supported by Text Control GmbH. | ||
| 8 | * | ||
| 9 | * @link https://www.reporting.cloud to learn more about ReportingCloud | ||
| 10 | * @link https://tinyurl.com/vmbbh6kd for the canonical source repository | ||
| 11 | * @license https://tinyurl.com/3pc9am89 | ||
| 12 | * @copyright © 2023 Text Control GmbH | ||
| 13 | */ | ||
| 14 | |||
| 15 | namespace TextControl\ReportingCloud\Stdlib; | ||
| 16 | |||
| 17 | /** | ||
| 18 | * ReportingCloud console helper (used only for tests and demos) | ||
| 19 | */ | ||
| 20 | class ConsoleUtils extends AbstractStdlib | ||
| 21 | { | ||
| 22 | /** | ||
| 23 | * Name of PHP constant or environmental variable storing API key | ||
| 24 | * | ||
| 25 | * @const REPORTING_CLOUD_API_KEY | ||
| 26 | * @var string | ||
| 27 | */ | ||
| 28 | final public const API_KEY = 'REPORTING_CLOUD_API_KEY'; | ||
| 29 | |||
| 30 | /** | ||
| 31 | * Name of PHP constant or environmental variable storing base URI | ||
| 32 | * | ||
| 33 | * @const REPORTING_CLOUD_BASE_URI | ||
| 34 | * @var string | ||
| 35 | */ | ||
| 36 | final public const BASE_URI = 'REPORTING_CLOUD_BASE_URI'; | ||
| 37 | |||
| 38 | /** | ||
| 39 | * Check that either the API key has been defined in environment variables | ||
| 40 | */ | ||
| 41 | 2 | public static function checkCredentials(): bool | |
| 42 |     { | ||
| 43 | 2 | return 0 < strlen(self::apiKey()); | |
| 44 | } | ||
| 45 | |||
| 46 | /** | ||
| 47 | * Return the ReportingCloud API key from a PHP constant or environmental variable | ||
| 48 | */ | ||
| 49 | 180 | public static function apiKey(): string | |
| 50 |     { | ||
| 51 | 180 | return self::getValueFromConstOrEnvVar(self::API_KEY); | |
| 52 | } | ||
| 53 | |||
| 54 | /** | ||
| 55 | * Return the ReportingCloud base URI from a PHP constant or environmental variable | ||
| 56 | */ | ||
| 57 | 72 | public static function baseUri(): string | |
| 58 |     { | ||
| 59 | 72 | return self::getValueFromConstOrEnvVar(self::BASE_URI); | |
| 60 | } | ||
| 61 | |||
| 62 | /** | ||
| 63 | * Return error message explaining how to configure PHP constant or environmental variables | ||
| 64 | */ | ||
| 65 | 2 | public static function errorMessage(): string | |
| 66 |     { | ||
| 67 | // phpcs:disable | ||
| 68 | |||
| 69 | 2 | $format = <<<END | |
| 70 | |||
| 71 | \e[41m\e[1mError: ReportingCloud API key not defined.\e[0m | ||
| 72 | |||
| 73 | In order to execute \e[32m%s\e[0m, you must first set your ReportingCloud API key. | ||
| 74 | |||
| 75 | There are two ways in which you can do this: | ||
| 76 | |||
| 77 | 1) Define a PHP constant: | ||
| 78 | |||
| 79 |     \e[1mdefine('%s', '%s');\e[0m | ||
| 80 | |||
| 81 | 2) Set an environmental variable (for example in .bashrc) | ||
| 82 | |||
| 83 | \e[1mexport %s='%s'\e[0m | ||
| 84 | |||
| 85 | Note, these instructions apply only to the demo scripts and phpunit tests. | ||
| 86 | |||
| 87 | When you use ReportingCloud in your application, set the API key in your constructor or using the 'setApiKey(string \$apiKey):self' method. | ||
| 88 | |||
| 89 | For an example, see \e[32m'/demo/instantiation.php'\e[0m. | ||
| 90 | |||
| 91 | For further assistance and customer service please refer to: | ||
| 92 | |||
| 93 | https://www.reporting.cloud | ||
| 94 | |||
| 95 | |||
| 96 | 2 | END; | |
| 97 | // phpcs:enable | ||
| 98 | |||
| 99 | 2 | $filename = $_SERVER['argv'][0] ?? ''; | |
| 100 | 2 | $filename = realpath($filename); | |
| 101 | |||
| 102 | 2 |         if (is_bool($filename)) { | |
| 0 ignored issues–
                            show     
    
    
        introduced 
                            by  
  Loading history... | |||
| 103 | $name = 'this script'; | ||
| 104 |         } else { | ||
| 105 | 2 | $base = dirname(__FILE__, 3); | |
| 106 | 2 | $file = str_replace($base, '', $filename); | |
| 107 | 2 |             $name = sprintf("'%s'", $file); | |
| 108 | } | ||
| 109 | |||
| 110 | 2 | $key = self::API_KEY; | |
| 111 | 2 | $value = 'your-api-key'; | |
| 112 | |||
| 113 | 2 | $ret = sprintf($format, $name, $key, $value, $key, $value); | |
| 114 | |||
| 115 | 2 | return wordwrap($ret, 80); | |
| 116 | } | ||
| 117 | |||
| 118 | /** | ||
| 119 | * Dump information about a variable | ||
| 120 | */ | ||
| 121 | 2 | public static function dump(mixed $value): void | |
| 122 |     { | ||
| 123 | 2 | /** @scrutinizer ignore-call */ var_dump($value); | |
| 0 ignored issues–
                            show | |||
| 124 | } | ||
| 125 | |||
| 126 | /** | ||
| 127 | * Write a line to the console | ||
| 128 | */ | ||
| 129 | 6 | public static function writeLn(string $format = '', array $args = []): void | |
| 130 |     { | ||
| 131 | 6 |         if ([] !== $args) { | |
| 132 | 4 | echo vsprintf($format, $args); | |
| 133 |         } else { | ||
| 134 | 2 | echo $format; | |
| 135 | } | ||
| 136 | |||
| 137 | 6 | echo PHP_EOL; | |
| 138 | } | ||
| 139 | |||
| 140 | /** | ||
| 141 | * Return a value from a PHP constant or environmental variable | ||
| 142 | */ | ||
| 143 | 180 | private static function getValueFromConstOrEnvVar(string $key): string | |
| 144 |     { | ||
| 145 | 180 | $value = self::getValueFromConst($key); | |
| 146 | |||
| 147 | 180 |         if (0 < strlen($value)) { | |
| 148 | return $value; | ||
| 149 | } | ||
| 150 | |||
| 151 | 180 | $value = self::getValueFromEnvVar($key); | |
| 152 | |||
| 153 | 180 |         if (0 < strlen($value)) { | |
| 154 | 180 | return $value; | |
| 155 | } | ||
| 156 | |||
| 157 | 74 | return ''; | |
| 158 | } | ||
| 159 | |||
| 160 | /** | ||
| 161 | * Return a value from a PHP constant | ||
| 162 | */ | ||
| 163 | 180 | private static function getValueFromConst(string $key): string | |
| 164 |     { | ||
| 165 | 180 |         if (defined($key)) { | |
| 166 | $value = constant($key); | ||
| 167 |             if (is_string($value)) { | ||
| 168 | $value = trim($value); | ||
| 169 |                 if (0 < strlen($value)) { | ||
| 170 | return $value; | ||
| 171 | } | ||
| 172 | } | ||
| 173 | } | ||
| 174 | |||
| 175 | 180 | return ''; | |
| 176 | } | ||
| 177 | |||
| 178 | /** | ||
| 179 | * Return a value from an environmental variable | ||
| 180 | */ | ||
| 181 | 180 | private static function getValueFromEnvVar(string $key): string | |
| 182 |     { | ||
| 183 | 180 | $value = getenv($key); | |
| 184 | |||
| 185 | 180 |         if (is_string($value)) { | |
| 0 ignored issues–
                            show | |||
| 186 | 180 | $value = trim($value); | |
| 187 | 180 |             if (0 < strlen($value)) { | |
| 188 | 180 | return $value; | |
| 189 | } | ||
| 190 | } | ||
| 191 | |||
| 192 | 74 | return ''; | |
| 193 | } | ||
| 194 | } | ||
| 195 | 
