ERROR: (' . $code . ') ' . $description . '
'; - } - - /** - * Returns a JSON string with the error code and description - * - * @param $code int|string The error code. - * @param $description string The description of the error. - * - * @return bool|string A JSON string - */ - private static function jsonError(int|string $code, string $description): bool|string - { - return json_encode([ - 'success' => false, - 'errorcode' => $code, - 'description' => $description, - ], JSON_PRETTY_PRINT); - } - - - /** - * Returns a string that contains the error code and description - * - * @param $code int|string The error code. - * @param $description string The description of the error. - * - * @return string A string with the error code and description. - */ - private static function textError(int|string $code, string $description): string - { - return 'ERROR: (' . $code . ') ' . $description; - } - - /** - * "If the type is csv, then call the csvSuccess function, if the type is html, then call the htmlSuccess function, etc." - * - * The `match` keyword is a new feature in PHP 8. It's a lot like a switch statement, but it's more powerful - * - * @param $files array An array of file objects. - */ - public function send(array $files): void - { - $response = match ($this->type) { - 'csv' => $this->csvSuccess($files), - 'html' => $this->htmlSuccess($files), - 'json' => $this->jsonSuccess($files), - 'text' => $this->textSuccess($files), - }; - - http_response_code(200); // "200 OK". Success. - echo $response; - } - - /** - * Takes an array of files and returns a CSV string - * - * @param $files array An array of files that have been uploaded. - * - * @return string A string of the files in the array. - */ - private static function csvSuccess(array $files): string - { - $result = '"name","url","hash","size"' . "\r\n"; - foreach ($files as $file) { - $result .= '"' . $file['name'] . '"' . ',' . - '"' . $file['url'] . '"' . ',' . - '"' . $file['hash'] . '"' . ',' . - '"' . $file['size'] . '"' . "\r\n"; + public mixed $type; + + /** + * Takes a string as an argument and sets the header to the appropriate content type + * + * @param $response_type string The type of response you want to return. Valid options are: csv, html, json, text. + */ + public function __construct(string $response_type = "json") + { + switch ($response_type) { + case 'csv': + header('Content-Type: text/csv; charset=UTF-8'); + $this->type = $response_type; + break; + case 'html': + header('Content-Type: text/html; charset=UTF-8'); + $this->type = $response_type; + break; + case 'json': + header('Content-Type: application/json; charset=UTF-8'); + $this->type = $response_type; + break; + case 'gyazo': + header('Content-Type: text/plain; charset=UTF-8'); + $this->type = 'text'; + break; + case 'text': + header('Content-Type: text/plain; charset=UTF-8'); + $this->type = $response_type; + break; + default: + header('Content-Type: application/json; charset=UTF-8'); + $this->type = 'json'; + $this->error(400, 'Invalid response type. Valid options are: csv, html, json, text.'); + break; + } } - - return $result; - } - - /** - * Takes an array of files and returns a string of HTML links - * - * @param $files array An array of files to be uploaded. - * - * @return string the result of the foreach loop. - */ - private static function htmlSuccess(array $files): string - { - $result = ''; - - foreach ($files as $file) { - $result .= '' . $file['url'] . 'ERROR: (' . $code . ') ' . $description . '
'; + } + + /** + * Returns a JSON string with the error code and description + * + * @param $code int|string The error code. + * @param $description string The description of the error. + * + * @return bool|string A JSON string + */ + private static function jsonError(int|string $code, string $description):bool|string + { + return json_encode([ + 'success' => false, + 'errorcode' => $code, + 'description' => $description, + ], JSON_PRETTY_PRINT); + } + + /** + * Returns a string that contains the error code and description + * + * @param $code int|string The error code. + * @param $description string The description of the error. + * + * @return string A string with the error code and description. + */ + private static function textError(int|string $code, string $description):string + { + return 'ERROR: (' . $code . ') ' . $description; + } + + /** + * "If the type is csv, then call the csvSuccess function, if the type is html, then call the htmlSuccess function, etc." + * + * The `match` keyword is a new feature in PHP 8. It's a lot like a switch statement, but it's more powerful + * + * @param $files array An array of file objects. + */ + public function send(array $files):void + { + $response = match ($this->type) { + 'csv' => $this->csvSuccess($files), + 'html' => $this->htmlSuccess($files), + 'json' => $this->jsonSuccess($files), + 'text' => $this->textSuccess($files), + }; + http_response_code(200); // "200 OK". Success. + echo $response; + } + + /** + * Takes an array of files and returns a CSV string + * + * @param $files array An array of files that have been uploaded. + * + * @return string A string of the files in the array. + */ + private static function csvSuccess(array $files):string + { + $result = '"name","url","hash","size"' . "\r\n"; + foreach ($files as $file) { + $result .= '"' . $file['name'] . '"' . ',' . + '"' . $file['url'] . '"' . ',' . + '"' . $file['hash'] . '"' . ',' . + '"' . $file['size'] . '"' . "\r\n"; + } + return $result; + } + + /** + * Takes an array of files and returns a string of HTML links + * + * @param $files array An array of files to be uploaded. + * + * @return string the result of the foreach loop. + */ + private static function htmlSuccess(array $files):string + { + $result = ''; + foreach ($files as $file) { + $result .= '' . $file['url'] . '