diff --git a/src/Controller/RequestController.php b/src/Controller/RequestController.php index c0dbbba..39509de 100644 --- a/src/Controller/RequestController.php +++ b/src/Controller/RequestController.php @@ -22,17 +22,17 @@ use OpenApi\Attributes as OAT; */ #[OAT\Info(version: '0.0.1', title: 'bindAPI')] #[OAT\Server( - url: "{schema}://{hostname}/api", + url : "{schema}://{hostname}/api", description: "The bindAPI URL.", - variables: [ + variables : [ new OAT\ServerVariable( serverVariable: "schema", - default: "https", - enum: ["https", "http"] + default : "https", + enum : ["https", "http"] ), new OAT\ServerVariable( serverVariable: "hostname", - default: "ns2.24unix.net", + default : "ns2.24unix.net", ) ] )] @@ -41,10 +41,10 @@ use OpenApi\Attributes as OAT; )] #[OAT\SecurityScheme( securityScheme: "Authorization", - type: "apiKey", - description: "description", - name: "X-API-Key", - in: "header" + type : "apiKey", + description : "description", + name : "X-API-Key", + in : "header" )] class RequestController { @@ -101,29 +101,29 @@ class RequestController * @return void */ #[OAT\Get( - path: '/domains', + path : '/domains', operationId: 'getAllDomains', description: 'Returns a list of all domains on this server.', - summary: 'Listing all domains.', + summary : 'Listing all domains.', // security: [ // 'Authorization' => [ // // "read:api" // ] // ], - servers: [], - tags: ['Domains'], - responses: [ + servers : [], + tags : ['Domains'], + responses : [ new OAT\Response( - response: 200, + response : 200, description: 'OK' ), new OAT\Response( - response: 401, + response : 401, description: 'API key is missing or invalid.' ), new OAT\Response( - response: 404, + response : 404, description: 'Domain not found.' )] )] @@ -186,27 +186,27 @@ class RequestController */ #[OAT\Get( - path: '/domains/{name}', + path : '/domains/{name}', operationId: 'getSingleDomain', description: 'Returns information of a single domain specified by its domain name.', - summary: 'Returns a single domain.', - security: [ + summary : 'Returns a single domain.', + security : [ ], - tags: ['Domains'], - parameters: [ + tags : ['Domains'], + parameters : [ new OAT\Parameter(name: 'name', in: 'path', required: true, schema: new OAT\Schema(type: 'string')), ], - responses: [ + responses : [ new OAT\Response( - response: 200, + response : 200, description: 'OK' ), new OAT\Response( - response: 401, + response : 401, description: 'API key is missing or invalid.' ), new OAT\Response( - response: 404, + response : 404, description: 'Domain not found.' )] @@ -314,9 +314,9 @@ class RequestController if ($this->uri[3] == 'name') { if ($result = $this->domainRepository->findByName(name: $this->uri[4])) { $domain = [ - 'id' => $result->getId(), - 'name' => $result->getName(), - 'content' => json_decode(json: $result->getContent()) + 'id' => $result->getId(), + 'name' => $result->getName(), + 'panel' => $result->getPanel() ]; $this->result = $domain; } else { @@ -332,9 +332,9 @@ class RequestController if ($id > 0) { if ($result = $this->domainRepository->findById(id: $id)) { $domain = [ - 'id' => $result->getId(), - 'name' => $result->getName(), - 'content' => json_decode(json: $result->getContent()) + 'id' => $result->getId(), + 'name' => $result->getName(), + 'panel' => $result->getPanel() ]; $this->result = $domain; } else { @@ -342,7 +342,6 @@ class RequestController $this->status = "404 Not Found "; $this->message = "The specified domain was not found."; } - } else { $this->header = "400 Bad request"; $this->status = "400 Not Found"; @@ -352,128 +351,117 @@ class RequestController } } } - - - /** - * @return void - */ - public - function handleDomainPostRequest(): void - { - $name = $_POST['name'] ?? ''; - $panel = $_POST['panel'] ?? ''; - $content = $_POST['content'] ?? ''; - if (empty($name)) { + + + /** + * @return void + */ + public + function handleDomainPostRequest(): void + { + $name = $_POST['name'] ?? ''; + $panel = $_POST['panel'] ?? ''; + if (empty($name)) { + $this->header = "400 Bad Request"; + $this->status = "400 Bad Request"; + $this->message = "A name is required"; + } else { + if (empty($panel)) { $this->header = "400 Bad Request"; $this->status = "400 Bad Request"; - $this->message = "A name is required"; + $this->message = "A panel ID is required."; } else { - if (empty($a) && empty($aaaa) && empty($panel)) { - $this->header = "400 Bad Request"; - $this->status = "400 Bad Request"; - $this->message = "At least one IP address or panel ID is required."; + if ($this->domainRepository->findByName(name: $name)) { + $this->header = "400 Bad request"; + $this->status = "400 Bad request"; + $this->message = "Domain: $name already exists."; } else { - if ($this->domainRepository->findByName(name: $name)) { - $this->header = "400 Bad request"; - $this->status = "400 Bad request"; - $this->message = "Domain: $name already exists."; + $domain = new Domain(name: $name, panel: $panel); + if ($result = $this->domainRepository->insert(domain: $domain)) { + $this->header = "201 Created"; + $this->status = "201 Created"; } else { - $domain = new Domain(name: $name, content: $content); - if ($result = $this->domainRepository->insert(domain: $domain)) { - $this->header = "201 Created"; - $this->status = "201 Created"; - } else { - $this->header = "500 Server error"; - $this->status = "500 Server error"; - } - $this->message = $result; + $this->header = "500 Server error"; + $this->status = "500 Server error"; } + $this->message = $result; } } } - - - /** - * @return void - */ - public - function handleDomainPutRequest(): void - { - $putData = fopen(filename: 'php://input', mode: 'r'); - $data = fread(stream: $putData, length: 512); - $params = explode(separator: '&', string: $data); - - foreach ($params as $param) { - [$key, $value] = explode(separator: '=', string: $param); - $put[$key] = $value; - } - $id = $put['id'] ?? 0; - $name = $put['name'] ?? ''; - $content = $put['content'] ?? ""; - - if ($id == 0) { - $this->status = "400 Bad Request"; - $this->message = "An ID is required"; - } else { - if (!$this->domainRepository->findByID(id: $id)) { - $this->status = "404 Not Found"; - $this->message = "Domain with ID : $id doesn't exist."; - } else { - // TODO not required, as we rely on the ID - if (empty($name)) { - $this->status = "400 Bad Request"; - $this->message = "A name is required"; - } else { - if (empty($a) && empty($aaaa)) { - $this->status = "400 Bad Request"; - $this->message = "At least one IP address is required."; - } else { - $domain = new Domain(name: $name, id: $id, content: $content); - $this->domainRepository->update(domain: $domain); - $this->header = "201 Updated"; - $this->status = "201 Updated"; - $this->message = "201 Updated"; - } - } - } - } - } - - - /** - * @return void - */ - public - function handleDomainDeleteRequest(): void - { - $deleteData = fopen(filename: 'php://input', mode: 'r'); - $data = fread(stream: $deleteData, length: 512); - $params = explode(separator: '&', string: $data); - - foreach ($params as $param) { - [$key, $value] = explode(separator: '=', string: $param); - $delete[$key] = $value; - } - - $id = $delete['id'] ?? 0; - - if ($id == 0) { - $this->header = "400 Bad Request"; - $this->status = "400 Bad Request"; - $this->message = "You need to supply an ID."; - } else { - - if (!$domain = $this->domainRepository->findByID(id: $id)) { - $this->header = "400 Bad Request"; - $this->status = "400 Bad Request"; - $this->message = "There is no domain with ID $id."; - } else { - $this->domainRepository->delete(domain: $domain); - $this->header = "204 No content."; - $this->status = "204 No content."; - $this->message = "The domain $id has been deleted."; - } - } - } - } + + + /** + * @return void + */ + public function handleDomainPutRequest(): void + { + $putData = fopen(filename: 'php://input', mode: 'r'); + $data = fread(stream: $putData, length: 512); + $params = explode(separator: '&', string: $data); + + foreach ($params as $param) { + [$key, $value] = explode(separator: '=', string: $param); + $put[$key] = $value; + } + $id = $put['id'] ?? 0; + $name = $put['name'] ?? ''; + $panel = $put['panel'] ?? ""; + + if ($id == 0) { + $this->header = "400 Bad Request"; + $this->status = "400 Bad Request"; + $this->message = "An ID is required"; + } else { + if (!$this->domainRepository->findByID(id: $id)) { + $this->status = "404 Not Found"; + $this->message = "Domain with ID : $id doesn't exist."; + } else { + // TODO not required, as we rely on the ID + $domain = new Domain(name: $name, panel: $panel, id: $id); + $this->domainRepository->update(domain: $domain); + $this->header = "201 Updated"; + $this->status = "201 Updated"; + $this->message = "201 Updated"; + } + } + } + + + /** + * @return void + */ + public + function handleDomainDeleteRequest(): void + { + $deleteData = fopen(filename: 'php://input', mode: 'r'); + $data = fread(stream: $deleteData, length: 512); + $params = explode(separator: '&', string: $data); + + foreach ($params as $param) { + [$key, $value] = explode(separator: '=', string: $param); + $delete[$key] = $value; + } + + $id = $delete['id'] ?? 0; + + if ($id == 0) { + $this->header = "400 Bad Request"; + $this->status = "400 Bad Request"; + $this->message = "You need to supply an ID."; + } else { + + if (!$domain = $this->domainRepository->findByID(id: $id)) { + $this->header = "400 Bad Request"; + $this->status = "400 Bad Request"; + $this->message = "There is no domain with ID $id."; + } else { + $this->domainRepository->delete(domain: $domain); + $this->header = "204 No content."; + $this->status = "204 No content."; + $this->message = "The domain $id has been deleted."; + } + } + } + +}