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 |