Author: Shivam Mathur (shivammathur)
Date: 2024-08-12T07:21:29+05:30

Commit: 
https://github.com/php/web-downloads/commit/290b67d5d49cf253f7be8f86ba9773a5423dd303
Raw diff: 
https://github.com/php/web-downloads/commit/290b67d5d49cf253f7be8f86ba9773a5423dd303.diff

Add HandlerInterface and BaseHandler

Changed paths:
  A  src/BaseHandler.php
  A  src/HandlerInterface.php
  M  src/IndexHandler.php
  M  src/PeclHandler.php
  M  src/PhpHandler.php
  M  src/Router.php
  M  src/WinlibsHandler.php


Diff:

diff --git a/src/BaseHandler.php b/src/BaseHandler.php
new file mode 100644
index 0000000..b6a7961
--- /dev/null
+++ b/src/BaseHandler.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace App;
+
+abstract class BaseHandler implements HandlerInterface
+{
+    public function handle(): void {
+        $data = json_decode(file_get_contents('php://input'), true);
+
+        if($this->validate($data)) {
+            $this->execute($data);
+        }
+    }
+    protected abstract function validate(array $data): bool;
+    protected abstract function execute(array $data): void;
+}
\ No newline at end of file
diff --git a/src/HandlerInterface.php b/src/HandlerInterface.php
new file mode 100644
index 0000000..f2bdacc
--- /dev/null
+++ b/src/HandlerInterface.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace App;
+
+interface HandlerInterface
+{
+    public function handle(): void;
+}
\ No newline at end of file
diff --git a/src/IndexHandler.php b/src/IndexHandler.php
index c15db73..62af27b 100644
--- a/src/IndexHandler.php
+++ b/src/IndexHandler.php
@@ -1,10 +1,20 @@
 <?php
 
 namespace App;
-class IndexHandler
+class IndexHandler extends BaseHandler
 {
     public function handle(): void
     {
         echo 'Welcome!';
     }
+
+    protected function validate(array $data): bool
+    {
+        return true;
+    }
+
+    protected function execute(array $data): void
+    {
+        //
+    }
 }
\ No newline at end of file
diff --git a/src/PeclHandler.php b/src/PeclHandler.php
index 9ed320a..fa114cf 100644
--- a/src/PeclHandler.php
+++ b/src/PeclHandler.php
@@ -5,19 +5,9 @@
 use Exception;
 use ZipArchive;
 
-class PeclHandler
+class PeclHandler extends BaseHandler
 {
-
-    public function handle(): void
-    {
-        $data = json_decode(file_get_contents('php://input'), true);
-
-        if($this->validate($data)) {
-            $this->execute($data);
-        }
-    }
-
-    private function validate(mixed $data): bool
+    protected function validate(mixed $data): bool
     {
         $validator = new Validator([
             'url' => 'required|url',
@@ -37,7 +27,7 @@ private function validate(mixed $data): bool
         return $valid;
     }
 
-    private function execute(array $data): void
+    protected function execute(array $data): void
     {
         try {
             extract($data);
@@ -53,7 +43,8 @@ private function execute(array $data): void
      */
     private function fetchExtension(string $extension, string $ref, string 
$url, string $token): void
     {
-        $filepath = "/tmp/$extension-$ref.zip";
+        $filepath = "/tmp/$extension-$ref-" . strtotime('now') . ".zip";
+
         FetchArtifact::handle($url, $filepath, $token);
 
         if(!file_exists($filepath)) {
diff --git a/src/PhpHandler.php b/src/PhpHandler.php
index 320eb76..617c915 100644
--- a/src/PhpHandler.php
+++ b/src/PhpHandler.php
@@ -2,10 +2,20 @@
 
 namespace App;
 
-class PhpHandler
+class PhpHandler extends BaseHandler
 {
 
-    public function handle()
+    public function handle(): void
     {
     }
+
+    protected function validate(array $data): bool
+    {
+        return true;
+    }
+
+    protected function execute(array $data): void
+    {
+        //
+    }
 }
\ No newline at end of file
diff --git a/src/Router.php b/src/Router.php
index 7d16d5f..9152eec 100644
--- a/src/Router.php
+++ b/src/Router.php
@@ -42,6 +42,7 @@ public function handleRequest(): void
                 return;
             }
 
+            /** @var BaseHandler $handler */
             $handler = $route['handler'];
             (new $handler)->handle();
         } elseif (!empty($allowedMethods)) {
diff --git a/src/WinlibsHandler.php b/src/WinlibsHandler.php
index ee0b918..c541f82 100644
--- a/src/WinlibsHandler.php
+++ b/src/WinlibsHandler.php
@@ -2,10 +2,20 @@
 
 namespace App;
 
-class WinlibsHandler
+class WinlibsHandler extends BaseHandler
 {
 
-    public function handle()
+    public function handle(): void
     {
     }
+
+    protected function validate(array $data): bool
+    {
+        return true;
+    }
+
+    protected function execute(array $data): void
+    {
+        //
+    }
 }
\ No newline at end of file

Reply via email to