From afc817be7cd9ebe6b1da2bf63a54d144ec0b05bb Mon Sep 17 00:00:00 2001 From: dconco Date: Mon, 1 Jul 2024 15:50:42 +0100 Subject: [PATCH 1/5] Added documentation to README.md file --- README.md | 259 ++++++++++++++++++++++++++++++++++++++++++++++++++ composer.json | 2 +- 2 files changed, 260 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e69de29..551d196 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,259 @@ +# PhpSlides HTTP Status + +# Installation + +After creating your PhpSlides project, navigate to the project directory and install PhpSlides-Status package using this command below: +```bash +composer require dconco/phpslides-status +``` +Or download the zip file directly from the released version, ectract the file and add it to a folder 📂 in your PhpSlides project. + +[Download phpslides-status zip](https://github.com/dconco/phpslides-status/releases/tag/v0.0.1) + +# Documentation +## Using Status() class function + +Create a Status instance for API response. Which is used in PhpSlides API Controller Class + +```php + +``` +You can pass a string value to the `Status()` function parameter which is by default `Response::JSON` using the Response namespace `PhpSlides\Http\Response` + +In returning value in JSON format. The parameter includes this enum value type: +```php +use PhpSlides\Http\Response; + +Response::JSON; +Response::HTML; +Response::CSV; +Response::XML; + +new Status(Response::JSON); +``` + +If the parameters contain any value apart from the `enum ResponseType value` +it'll return default value an array form, which isn't recommended. + +## Some Functions & Methods + +### success() method + +Returning a default success message, using the `success()` method. + +```php +success(); +} + +?> +``` + +The `success()` method takes 2 parameters, `$data` to render and `$status` which is the status code. + +The first parameter can be either Array or String and the second parameter is an Integer from `StatusCode` static class. +It returns `Response::` which is passed as a parameter in the `Status()` function. + +```php +use PhpSlides\StatusCode; + +$user = [ + "name": "John Doe", + "email": "john@doe.com" +]; +return $status->success($user, StatusCode::OK); +``` + +### error() method + +Returning an error Api message using the `error()` method +It also takes 2 parameters, the first is either an Array or String and the second which is interger for setting `http_response_code`, +it has default value of `StatusCode::INTERNAL_SERVER_ERROR` + +It also returns `Response::` + +```php + +return $status->error('User not Found', StatusCode::NOT_FOUND); +``` + +### Full code for success() & error() methods. + +If no parameter is specified in the `Status()`, +by default it's returning `Response::JSON` for returning response in JSON format + +```php +success($user); // by default the second parameter is `StatusCode::OK` + } else { + // not found message + $response = $status->error("User user_id=$user_id is not found", StatusCode::NOT_FOUND); + } + + return $response; // return message as a JSON format `Response::JSON` + } +} + +?> +``` + +## Namespace and Status Interface + +### namespace + +`\PhpSlides\Status()` + +`\PhpSlides\StatusCode` + +`\PhpSlides\StatusText` + +`\PhpSlides\Http\Response` + +`\PhpSlides\Enums\ResponseType` + +`\PhpSlides\Interface\StatusInterface` + +`\PhpSlides\Interface\ResponseInterface` + +`\PhpSlides\Exception\ApiException()` + +`\PhpSlides\Exception\ExceptionInterface` + +### Status() Interface Methods + +`__construct(string $response = Response::JSON)` + +`public function getStatus (): int;` + +`public function getStatusText (): string;` + +`public function getMessage (): mixed;` + +`public function get (): string|array;` + +`public function getJson (): string;` + +`public function setStatus (int $status): void;` + +`public function setStatusText (string $statusText): void;` + +`public function setMessage (mixed $message): void;` + +```php +public function set ( + mixed $data, + int $status = StatusCode::NO_CONTENT, + string $statusText = StatusText::NO_CONTENT +): void; +``` + +```php +public function error ( + array|string $data, + int $status = StatusCode::INTERNAL_SERVER_ERROR +): string|array; +``` + +```php +public function success ( + array|string $data, + int $status = StatusCode::OK +): string|array; +``` + +### Response{} Interface Method + +`const JSON = ResponseType::JSON;` + +`const HTML = ResponseType::HTML;` + +`const CSV = ResponseType::CSV;` + +`const XML = ResponseType::XML;` + +```php +public static function json( + array $data = [], + int $status = StatusCode::OK, +): string; +``` + +```php +public static function html( + array $data = [], + int $status = StatusCode::OK, +): string; +``` + +```php +public static function csv( + array $data = [], + int $status = StatusCode::OK, +): string; +``` + +```php +public static function xml( + array $data = [], + int $status = StatusCode::OK, +): string; +``` + +```php +public static function array( + array $data = [], + int $status = StatusCode::UNSUPPORTED_MEDIA_TYPE, +): array; +``` + +### enum ResponseType{} Interface + +`const JSON = 'JSON';` + +`const HTML = 'HTML';` + +`const CSV = 'CSV';` + +`const XML = 'XML';` \ No newline at end of file diff --git a/composer.json b/composer.json index 0944551..594e1e1 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ "homepage": "https://dconco.github.io" } ], - "version": "0.1", + "version": "0.0.1", "require": { "php": ">=8.2" }, From b5cf1ec24372bab98090d3d9c0126fbc6a60aefc Mon Sep 17 00:00:00 2001 From: dconco Date: Mon, 1 Jul 2024 16:14:07 +0100 Subject: [PATCH 2/5] Updated README --- README.md | 96 +++++++++++++++++-------------------------------------- 1 file changed, 30 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index 551d196..a04c297 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,20 @@ # PhpSlides HTTP Status -# Installation +## Installation After creating your PhpSlides project, navigate to the project directory and install PhpSlides-Status package using this command below: + ```bash composer require dconco/phpslides-status ``` + Or download the zip file directly from the released version, ectract the file and add it to a folder 📂 in your PhpSlides project. [Download phpslides-status zip](https://github.com/dconco/phpslides-status/releases/tag/v0.0.1) -# Documentation -## Using Status() class function +## Documentation + +### Using Status() class function Create a Status instance for API response. Which is used in PhpSlides API Controller Class @@ -32,9 +35,11 @@ final class UserController extends Controller ?> ``` + You can pass a string value to the `Status()` function parameter which is by default `Response::JSON` using the Response namespace `PhpSlides\Http\Response` In returning value in JSON format. The parameter includes this enum value type: + ```php use PhpSlides\Http\Response; @@ -46,12 +51,12 @@ Response::XML; new Status(Response::JSON); ``` -If the parameters contain any value apart from the `enum ResponseType value` +If the parameters contain any value apart from the `enum ResponseType value` it'll return default value an array form, which isn't recommended. -## Some Functions & Methods +### Some Functions & Methods -### success() method +#### success() method Returning a default success message, using the `success()` method. @@ -61,11 +66,11 @@ Returning a default success message, using the `success()` method. use PhpSlides\Status; use PhpSlides\Http\Response; -final class UserController extends Controller -{ +final class UserController extends Controller { public function __invoke() { $status = new Status(Response::JSON); return $status->success(); + } } ?> @@ -73,7 +78,7 @@ final class UserController extends Controller The `success()` method takes 2 parameters, `$data` to render and `$status` which is the status code. -The first parameter can be either Array or String and the second parameter is an Integer from `StatusCode` static class. +The first parameter can be either Array or String and the second parameter is an Integer from `StatusCode` static class. It returns `Response::` which is passed as a parameter in the `Status()` function. ```php @@ -86,7 +91,7 @@ $user = [ return $status->success($user, StatusCode::OK); ``` -### error() method +#### error() method Returning an error Api message using the `error()` method It also takes 2 parameters, the first is either an Array or String and the second which is interger for setting `http_response_code`, @@ -99,9 +104,9 @@ It also returns `Response::` return $status->error('User not Found', StatusCode::NOT_FOUND); ``` -### Full code for success() & error() methods. +#### Full code for success() & error() methods -If no parameter is specified in the `Status()`, +If no parameter is specified in the `Status()`, by default it's returning `Response::JSON` for returning response in JSON format ```php @@ -118,20 +123,20 @@ final class UserController extends Controller { public function __invoke(int $user_id) { $status = new Status(); - + if ($user_id === 1) { $user = [ 'name': 'John Doe', 'email': 'john@doe.com', 'user_id': $user_id ]; - + $response = $status->success($user); // by default the second parameter is `StatusCode::OK` } else { // not found message $response = $status->error("User user_id=$user_id is not found", StatusCode::NOT_FOUND); } - + return $response; // return message as a JSON format `Response::JSON` } } @@ -175,33 +180,17 @@ final class UserController extends Controller `public function getJson (): string;` +`public function set (mixed $data, int $status = StatusCode::NO_CONTENT, string $statusText = StatusText::NO_CONTENT ): void;` + `public function setStatus (int $status): void;` `public function setStatusText (string $statusText): void;` `public function setMessage (mixed $message): void;` -```php -public function set ( - mixed $data, - int $status = StatusCode::NO_CONTENT, - string $statusText = StatusText::NO_CONTENT -): void; -``` +`public function error (array|string $data, int $status = StatusCode::INTERNAL_SERVER_ERROR): string|array;` -```php -public function error ( - array|string $data, - int $status = StatusCode::INTERNAL_SERVER_ERROR -): string|array; -``` - -```php -public function success ( - array|string $data, - int $status = StatusCode::OK -): string|array; -``` +`public function success (array|string $data, int $status = StatusCode::OK): string|array;` ### Response{} Interface Method @@ -213,40 +202,15 @@ public function success ( `const XML = ResponseType::XML;` -```php -public static function json( - array $data = [], - int $status = StatusCode::OK, -): string; -``` +`public static function json(array $data = [], int $status = StatusCode::OK): string;` -```php -public static function html( - array $data = [], - int $status = StatusCode::OK, -): string; -``` +`public static function html(array $data = [], int $status = StatusCode::OK): string;` -```php -public static function csv( - array $data = [], - int $status = StatusCode::OK, -): string; -``` +`public static function csv(array $data = [], int $status = StatusCode::OK): string;` -```php -public static function xml( - array $data = [], - int $status = StatusCode::OK, -): string; -``` +`public static function xml(array $data = [], int $status = StatusCode::OK): string;` -```php -public static function array( - array $data = [], - int $status = StatusCode::UNSUPPORTED_MEDIA_TYPE, -): array; -``` +`public static function array(array $data = [], int $status = StatusCode::UNSUPPORTED_MEDIA_TYPE): array;` ### enum ResponseType{} Interface @@ -256,4 +220,4 @@ public static function array( `const CSV = 'CSV';` -`const XML = 'XML';` \ No newline at end of file +`const XML = 'XML';` From 8e7fe8d32849b8d66129c947313018e15a0cfd73 Mon Sep 17 00:00:00 2001 From: dconco Date: Mon, 1 Jul 2024 16:42:22 +0100 Subject: [PATCH 3/5] Updated Docs function --- src/Http/Response.php | 157 ++++++++++++++++++++++++++++++++---------- src/Status.php | 114 ++++++++++++++++++++++++++++-- src/StatusCode.php | 5 +- src/StatusText.php | 8 ++- 4 files changed, 239 insertions(+), 45 deletions(-) diff --git a/src/Http/Response.php b/src/Http/Response.php index 0816049..b7e069c 100644 --- a/src/Http/Response.php +++ b/src/Http/Response.php @@ -15,11 +15,23 @@ class Response implements ResponseInterface const XML = ResponseType::XML; /** - * Handle response to Json + * The function `json` in PHP sets the response header to indicate JSON content and returns the + * JSON-encoded data along with the specified HTTP status code. + * + * @param array data The `data` parameter is an array that contains the data you want to encode as + * JSON. This data will be converted to a JSON string using the `json_encode` function before being + * returned by the `json` method. + * @param int status The `status` parameter in the `json` function is used to specify the HTTP status + * code that will be returned in the response. It has a default value of `StatusCode::OK`, which + * typically corresponds to the HTTP status code `200 OK`. This parameter allows you to customize the + * status code based + * + * @return string The `json` method returns a JSON-encoded string representation of the provided data + * array. */ - public static function json( - array $data = [], - int $status = StatusCode::OK, + public static function json ( + array $data = [], + int $status = StatusCode::OK, ): string { header('Content-Type: application/json'); http_response_code($status); @@ -27,9 +39,27 @@ public static function json( return json_encode($data); } - public static function html( - array $data = [], - int $status = StatusCode::OK, + /** + * The function generates an HTML unordered list based on the provided data array with key-value + * pairs. + * + * @param array data The `data` parameter in the `html` function is an array that contains key-value + * pairs. The keys are used as labels and the values are the corresponding data to be displayed in the + * HTML output. + * @param int status The `status` parameter in the `html` function represents the HTTP status code + * that will be set in the response header. It is of type integer and is set to a default value of + * `StatusCode::OK`. This parameter allows you to specify the HTTP status code to be returned in the + * response. + * + * @return string The `html` function is returning an HTML string generated using the provided data + * array. The function sets the content type to text/html and the HTTP response code based on the + * status parameter. It then creates a DOMDocument object, generates a list (
    ) element, and + * populates it with list items (
  • ) based on the key-value pairs in the data array. If a value is + * an array + */ + public static function html ( + array $data = [], + int $status = StatusCode::OK, ): string { header('Content-Type: text/html'); http_response_code($status); @@ -38,16 +68,21 @@ public static function html( $ul = $html->createElement('ul'); - foreach ($data as $key => $value) { - if (is_array($value)) { - for ($i = 0; $i < count($value); $i++) { + foreach ($data as $key => $value) + { + if (is_array($value)) + { + for ($i = 0; $i < count($value); $i++) + { $li = $html->createElement('li'); $li->textContent = - array_keys($value)[$i] . ':' . array_values($value)[$i]; + array_keys($value)[$i] . ':' . array_values($value)[$i]; $ul->appendChild($li); } - } else { + } + else + { $li = $html->createElement('li'); $li->textContent = $key . ':' . $value; @@ -58,25 +93,43 @@ public static function html( return $html->saveHTML(); } - - public static function csv( - array $data = [], - int $status = StatusCode::OK, + + /** + * The function generates a CSV string from an array of data and sets the appropriate HTTP headers. + * + * @param array data The `csv` function you provided is used to generate a CSV string from the given + * data array. The data array should be structured in a way that each key-value pair represents a row + * in the CSV. + * @param int status The `status` parameter in the `csv` function is used to specify the HTTP status + * code that will be set in the response header. In the provided code snippet, the default value for + * the `status` parameter is `StatusCode::OK`. This means that if no status is provided when calling + * the + * + * @return string A string containing CSV formatted data based on the input array provided. + */ + public static function csv ( + array $data = [], + int $status = StatusCode::OK, ): string { header('Content-Type: text/csv'); http_response_code($status); $csv = ''; - foreach ($data as $key => $value) { - if (is_array($value)) { - for ($i = 0; $i < count($value); $i++) { + foreach ($data as $key => $value) + { + if (is_array($value)) + { + for ($i = 0; $i < count($value); $i++) + { $csv .= - array_keys($value)[$i] . - ',' . - array_values($value)[$i] . - "\n"; + array_keys($value)[$i] . + ',' . + array_values($value)[$i] . + "\n"; } - } else { + } + else + { $csv .= $key . ',' . $value . "\n"; } } @@ -84,9 +137,24 @@ public static function csv( return $csv; } - public static function xml( - array $data = [], - int $status = StatusCode::OK, + /** + * The function generates an XML document based on the provided data array and HTTP status code. + * + * @param array data The `data` parameter in the `xml` function is an array that contains the data you + * want to convert to XML format. Each key-value pair in the array will be converted into an XML + * element where the key becomes the element tag and the value becomes the element value. + * @param int status The `status` parameter in the `xml` function represents the HTTP status code that + * will be set in the response headers. It is of type integer and is set to a default value of + * `StatusCode::OK`. This parameter allows you to specify the HTTP status code for the response, + * indicating the success + * + * @return string The `xml` function returns an XML string generated based on the provided data array. + * The XML string represents the data in a structured format with elements and values as specified in + * the input array. + */ + public static function xml ( + array $data = [], + int $status = StatusCode::OK, ): string { header('Content-Type: text/xml'); http_response_code($status); @@ -94,16 +162,21 @@ public static function xml( $xml = new DOMDocument('1.0', 'UTF-8'); $root = $xml->createElement('root'); - foreach ($data as $key => $value) { - if (is_array($value)) { - for ($i = 0; $i < count($value); $i++) { + foreach ($data as $key => $value) + { + if (is_array($value)) + { + for ($i = 0; $i < count($value); $i++) + { $element = $xml->createElement( - array_keys($value)[$i], - array_values($value)[$i], + array_keys($value)[$i], + array_values($value)[$i], ); $root->appendChild($element); } - } else { + } + else + { $element = $xml->createElement($key, $value); $root->appendChild($element); } @@ -114,13 +187,25 @@ public static function xml( return $xml->saveXML(); } + /** + * This PHP function sets the HTTP response status code and content type before returning an array. + * + * @param array data The `data` parameter is an array that contains the data you want to return from + * the function. It has a default value of an empty array `[]`, which means if no data is provided + * when calling the function, it will return an empty array. + * @param int status The `status` parameter in the `array` function is used to specify the HTTP status + * code that will be returned in the response. In this case, the default value for the `status` + * parameter is `StatusCode::UNSUPPORTED_MEDIA_TYPE`. + * + * @return array An array is being returned, which is typecasted from the input data array. + */ public static function array( - array $data = [], - int $status = StatusCode::UNSUPPORTED_MEDIA_TYPE, + array $data = [], + int $status = StatusCode::UNSUPPORTED_MEDIA_TYPE, ): array { header('Content-Type: */*'); http_response_code($status); return (array) $data; } -} +} \ No newline at end of file diff --git a/src/Status.php b/src/Status.php index f1d708c..086ea92 100644 --- a/src/Status.php +++ b/src/Status.php @@ -7,14 +7,19 @@ class Status implements StatusInterface { - protected int $status = StatusCode::NO_CONTENT; protected string $statusText = StatusText::NO_CONTENT; protected mixed $message = []; protected string $response; /** - * @param string $response Set the Response Type for default API response + * The constructor function initializes the response type based on the provided parameter, with a + * fallback to an unsupported media type status if the provided type is not valid. + * + * @param string response The `response` parameter in the constructor function is a string that + * specifies the type of response. It can be one of the following values: `Response::JSON`, + * `Response::HTML`, `Response::CSV`, or `Response::XML`. If the provided `response` value is not one + * of */ public function __construct (string $response = Response::JSON) { @@ -27,23 +32,47 @@ public function __construct (string $response = Response::JSON) $this->response = $response; } - // Getters - + /** + * The getStatus function in PHP sets the HTTP response code and returns the status. + * + * @return int The `getStatus` function is returning the HTTP status code stored in the `->status` + * property. It also sets the HTTP response code using `http_response_code(->status)`. + */ public function getStatus (): int { http_response_code($this->status); return $this->status; } + + /** + * The getStatusText function in PHP returns the response as a string. + * + * @return string The `getStatusText` function is returning the value of the `` property of + * the object. + */ public function getStatusText (): string { return $this->response; } + /** + * This PHP function named getMessage returns the value of the message property. + * + * @return mixed The `getMessage` function is returning the value of the `` property of the + * object. The return type is `mixed`, which means it can be of any data type. + */ public function getMessage (): mixed { return $this->message; } + /** + * The function `get` returns data in different formats based on the specified response type. + * + * @return string|array The `get()` function returns either a string or an array based on the value of + * the `->response` property. The specific response format returned depends on the value of + * `->response` and includes JSON, HTML, XML, CSV, or a default array response. + */ public function get (): string|array { $data = [ @@ -67,6 +96,14 @@ public function get (): string|array } } + /** + * The function `getJson` returns a JSON-encoded string containing status information and sets + * appropriate HTTP headers. + * + * @return string The `getJson` function returns a JSON-encoded string containing the status, + * statusText, and message properties of the object. It also sets the HTTP response code and headers + * before returning the JSON string. + */ public function getJson (): string { $status = [ @@ -82,7 +119,21 @@ public function getJson (): string return json_encode($status); } - // Setters + /** + * The set function in PHP sets the status, status text, and message data for an object. + * + * @param mixed data The `data` parameter in the `set` function is a mixed type, which means it can + * accept values of different types (e.g., string, integer, array, object, etc.). This parameter is + * used to set the message data that will be stored in the object's `message` property + * @param int status The `status` parameter in the `set` function is used to set the HTTP status code + * for the response. It has a default value of `StatusCode::NO_CONTENT`, which is typically used when + * the response body is empty. You can override this default value by passing a different HTTP status + * code when + * @param string statusText The `statusText` parameter in the `set` function is a string parameter + * that represents the status text associated with the HTTP response status code. It is used to + * provide a human-readable description of the status code. In the provided code snippet, the default + * value for `statusText` is `Status + */ public function set (mixed $data, int $status = StatusCode::NO_CONTENT, string $statusText = StatusText::NO_CONTENT): void { $this->status = $status; @@ -90,21 +141,56 @@ public function set (mixed $data, int $status = StatusCode::NO_CONTENT, string $ $this->message = $data; } + /** + * This PHP function sets the status text for a class instance. + * + * @param string statusText The `setStatusText` function is used to set the status text of an object. + * The parameter `` is a string that represents the new status text that you want to set + * for the object. + */ public function setStatusText (string $statusText): void { $this->statusText = $statusText; } + /** + * The setStatus function in PHP sets the status property of an object to a specified integer value. + * + * @param int status The `setStatus` function takes an integer parameter `` and sets the + * `status` property of the object to the value of the `` parameter. + */ public function setStatus (int $status): void { $this->status = $status; } + /** + * The function setMessage sets the message property of an object to a given value. + * + * @param mixed message The `setMessage` function takes a parameter named `` of type `mixed`, + * which means it can accept values of any data type. This parameter is used to set the value of the + * `message` property of the object or class instance where this function is called. + */ public function setMessage (mixed $message): void { $this->message = $message; } + /** + * This PHP function handles errors by formatting the error data based on the response type and status + * code. + * + * @param array data The `data` parameter in the `error` function can accept either an array or a + * string. It is used to provide the error message or data that needs to be returned in the response. + * @param int status The `status` parameter in the `error` function is an optional integer parameter + * that represents the HTTP status code to be returned in the response. If not provided, the default + * value is `StatusCode::INTERNAL_SERVER_ERROR`. + * + * @return string|array The `error` function is returning either a string or an array based on the + * type of data passed to it. The function processes the input data and returns a response based on + * the value of the `` property. The response can be in JSON, HTML, XML, CSV, or as a plain + * array. + */ public function error (array|string $data, int $status = StatusCode::INTERNAL_SERVER_ERROR): string|array { $data = [ 'error' => $data ]; @@ -124,6 +210,24 @@ public function error (array|string $data, int $status = StatusCode::INTERNAL_SE } } + /** + * This PHP function returns a success response in various formats based on the specified response + * type. + * + * @param array data The `data` parameter in the `success` function can be either an array or a + * string. It is wrapped in an array with the key 'success' before being returned based on the + * response type specified. + * @param int status The `status` parameter in the `success` function represents the HTTP status code + * that will be returned in the response. By default, it is set to `StatusCode::OK`, which typically + * corresponds to the HTTP status code 200 (OK). However, you can override this default value by + * providing a + * + * @return string|array The `success` function is returning either a string or an array based on the + * type of response set in the class property `->response`. The function wraps the provided data + * in a 'success' key within an array and then returns the formatted response based on the response + * type. The specific response format returned depends on the value of `->response` which can be + * JSON, HTML, XML, + */ public function success (array|string $data, int $status = StatusCode::OK): string|array { $data = [ 'success' => $data ]; diff --git a/src/StatusCode.php b/src/StatusCode.php index 6889de6..d2bad73 100644 --- a/src/StatusCode.php +++ b/src/StatusCode.php @@ -7,8 +7,11 @@ * * This class defines constants for HTTP status codes. * Each constant represents a specific HTTP response status. + * + * HTTP status codes categorized into Success, Redirection, Client Error, and Server Error. */ -class StatusCode { +class StatusCode +{ /** @var int Success - OK */ const OK = 200; diff --git a/src/StatusText.php b/src/StatusText.php index 1e4d2a7..755739c 100644 --- a/src/StatusText.php +++ b/src/StatusText.php @@ -4,9 +4,11 @@ /** * Class StatusText - * - * This class defines constants for HTTP status codes text. + * + * This class defines constants for HTTP status text. * Each constant represents a specific HTTP response status. + * + * HTTP status text categorized into Success, Redirection, Client Error, and Server Error. */ class StatusText { @@ -189,4 +191,4 @@ class StatusText /** @var string Server Error - Network Authentication Required */ const NETWORK_AUTHENTICATION_REQUIRED = "NETWORK_AUTHENTICATION_REQUIRED"; -} +} \ No newline at end of file From 5d9678415f161630d6b7147562dcb587a11cef0c Mon Sep 17 00:00:00 2001 From: dconco Date: Mon, 1 Jul 2024 17:50:05 +0100 Subject: [PATCH 4/5] chore: Add export-ignore for images in .gitattributes --- .gitattributes | 1 + README.md | 4 ++++ images/status.jpeg | Bin 0 -> 33261 bytes 3 files changed, 5 insertions(+) create mode 100644 images/status.jpeg diff --git a/.gitattributes b/.gitattributes index de39352..baebd83 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,5 @@ /test export-ignore +/images export-ignore /.github export-ignore /.gitignore export-ignore /.gitattributes export-ignore diff --git a/README.md b/README.md index a04c297..5530005 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # PhpSlides HTTP Status +
    + +
    + ## Installation After creating your PhpSlides project, navigate to the project directory and install PhpSlides-Status package using this command below: diff --git a/images/status.jpeg b/images/status.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..cf60e4ce116c11e8be62762d35793a0e7186cf0c GIT binary patch literal 33261 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 Date: Mon, 1 Jul 2024 17:53:09 +0100 Subject: [PATCH 5/5] chore: Update license and README file --- LICENSE | 4 ++-- README.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/LICENSE b/LICENSE index a7de16d..0183749 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 Dave Conco - PhpSlides HTTP Status +Copyright (c) 2024 Dave Conco - HTTP PhpSlides-Status Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/README.md b/README.md index 5530005..5f1087a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# PhpSlides HTTP Status +# HTTP PhpSlides-Status