From ff72623036adb71d6de6c22d5dd77812ded10ef0 Mon Sep 17 00:00:00 2001
From: Adylan Roaffa <adylanrff@gmail.com>
Date: Thu, 18 Oct 2018 11:07:02 +0700
Subject: [PATCH] restructured code

---
 {server/app => app/controller}/book/Book.php  |   0
 .../app => app/controller}/book/BookDb.php    |   0
 .../controller}/book/BookUsecase.php          |   2 +-
 .../app => app/controller}/book/Review.php    |   0
 .../app => app/controller}/book/routes.php    |   0
 .../app => app/controller}/order/Order.php    |   0
 .../app => app/controller}/order/OrderDb.php  |   0
 .../controller}/order/OrderUsecase.php        |   2 +-
 .../app => app/controller}/order/routes.php   |   0
 .../controller}/user/AuthMiddleware.php       |   0
 {server/app => app/controller}/user/User.php  |   0
 .../app => app/controller}/user/UserDb.php    |   2 +-
 .../controller}/user/UserUsecase.php          |   8 +-
 .../app => app/controller}/user/routes.php    |   7 +-
 {client/app => app/view}/history.php          |   0
 app/view/homepage.php                         |   9 ++
 {client/app => app/view}/profile.php          |   0
 {client => app/view}/static/html/index.html   |   0
 client/app/homepage.php                       |   7 --
 client/public/index.php                       |  21 ----
 client/util/Routing/Request.php               |  14 ---
 client/util/Routing/Router.php                |  94 ------------------
 {server/config => config}/devel.php           |   3 +-
 {server/db => db}/db schema.png               | Bin
 {server/db => db}/tayo_book_store.sql         |   0
 {server/db => db}/tayo_book_store_dummy.sql   |   0
 {server/public => public}/index.php           |  21 ++--
 server/util/Routing/IMiddleware.php           |   9 --
 {server/util => util}/Database.php            |   0
 {client/util => util}/Routing/IMiddleware.php |   0
 {server/util => util}/Routing/Request.php     |   0
 {server/util => util}/Routing/Response.php    |   0
 {server/util => util}/Routing/Router.php      |   0
 {server/util => util}/autoloader.php          |   0
 34 files changed, 31 insertions(+), 168 deletions(-)
 rename {server/app => app/controller}/book/Book.php (100%)
 rename {server/app => app/controller}/book/BookDb.php (100%)
 rename {server/app => app/controller}/book/BookUsecase.php (73%)
 rename {server/app => app/controller}/book/Review.php (100%)
 rename {server/app => app/controller}/book/routes.php (100%)
 rename {server/app => app/controller}/order/Order.php (100%)
 rename {server/app => app/controller}/order/OrderDb.php (100%)
 rename {server/app => app/controller}/order/OrderUsecase.php (72%)
 rename {server/app => app/controller}/order/routes.php (100%)
 rename {server/app => app/controller}/user/AuthMiddleware.php (100%)
 rename {server/app => app/controller}/user/User.php (100%)
 rename {server/app => app/controller}/user/UserDb.php (97%)
 rename {server/app => app/controller}/user/UserUsecase.php (93%)
 rename {server/app => app/controller}/user/routes.php (73%)
 rename {client/app => app/view}/history.php (100%)
 create mode 100644 app/view/homepage.php
 rename {client/app => app/view}/profile.php (100%)
 rename {client => app/view}/static/html/index.html (100%)
 delete mode 100644 client/app/homepage.php
 delete mode 100644 client/public/index.php
 delete mode 100644 client/util/Routing/Request.php
 delete mode 100644 client/util/Routing/Router.php
 rename {server/config => config}/devel.php (80%)
 rename {server/db => db}/db schema.png (100%)
 rename {server/db => db}/tayo_book_store.sql (100%)
 rename {server/db => db}/tayo_book_store_dummy.sql (100%)
 rename {server/public => public}/index.php (62%)
 delete mode 100644 server/util/Routing/IMiddleware.php
 rename {server/util => util}/Database.php (100%)
 rename {client/util => util}/Routing/IMiddleware.php (100%)
 rename {server/util => util}/Routing/Request.php (100%)
 rename {server/util => util}/Routing/Response.php (100%)
 rename {server/util => util}/Routing/Router.php (100%)
 rename {server/util => util}/autoloader.php (100%)

diff --git a/server/app/book/Book.php b/app/controller/book/Book.php
similarity index 100%
rename from server/app/book/Book.php
rename to app/controller/book/Book.php
diff --git a/server/app/book/BookDb.php b/app/controller/book/BookDb.php
similarity index 100%
rename from server/app/book/BookDb.php
rename to app/controller/book/BookDb.php
diff --git a/server/app/book/BookUsecase.php b/app/controller/book/BookUsecase.php
similarity index 73%
rename from server/app/book/BookUsecase.php
rename to app/controller/book/BookUsecase.php
index 316b66e..d635e20 100644
--- a/server/app/book/BookUsecase.php
+++ b/app/controller/book/BookUsecase.php
@@ -1,5 +1,5 @@
 <?php
-    require_once __ROOT__.'/app/book/BookDb.php';
+    require_once __ROOT__.'/app/controller/book/BookDb.php';
 
     class BookUsecase {
         private $bookDb;
diff --git a/server/app/book/Review.php b/app/controller/book/Review.php
similarity index 100%
rename from server/app/book/Review.php
rename to app/controller/book/Review.php
diff --git a/server/app/book/routes.php b/app/controller/book/routes.php
similarity index 100%
rename from server/app/book/routes.php
rename to app/controller/book/routes.php
diff --git a/server/app/order/Order.php b/app/controller/order/Order.php
similarity index 100%
rename from server/app/order/Order.php
rename to app/controller/order/Order.php
diff --git a/server/app/order/OrderDb.php b/app/controller/order/OrderDb.php
similarity index 100%
rename from server/app/order/OrderDb.php
rename to app/controller/order/OrderDb.php
diff --git a/server/app/order/OrderUsecase.php b/app/controller/order/OrderUsecase.php
similarity index 72%
rename from server/app/order/OrderUsecase.php
rename to app/controller/order/OrderUsecase.php
index b5fb1b0..dcee983 100644
--- a/server/app/order/OrderUsecase.php
+++ b/app/controller/order/OrderUsecase.php
@@ -1,5 +1,5 @@
 <?php
-    require_once __ROOT__.'/app/order/OrderDb.php';
+    require_once __ROOT__.'/app/controller/order/OrderDb.php';
 
     class OrderUsecase {
         private $orderDb;
diff --git a/server/app/order/routes.php b/app/controller/order/routes.php
similarity index 100%
rename from server/app/order/routes.php
rename to app/controller/order/routes.php
diff --git a/server/app/user/AuthMiddleware.php b/app/controller/user/AuthMiddleware.php
similarity index 100%
rename from server/app/user/AuthMiddleware.php
rename to app/controller/user/AuthMiddleware.php
diff --git a/server/app/user/User.php b/app/controller/user/User.php
similarity index 100%
rename from server/app/user/User.php
rename to app/controller/user/User.php
diff --git a/server/app/user/UserDb.php b/app/controller/user/UserDb.php
similarity index 97%
rename from server/app/user/UserDb.php
rename to app/controller/user/UserDb.php
index a1c678c..865372d 100644
--- a/server/app/user/UserDb.php
+++ b/app/controller/user/UserDb.php
@@ -1,6 +1,6 @@
 <?php
     require_once __ROOT__."/util/Database.php";
-    require_once __ROOT__."/app/user/User.php";
+    require_once __ROOT__."/app/controller/user/User.php";
 
     class UserDb extends Database{ 
         function __construct(PDO $conn){
diff --git a/server/app/user/UserUsecase.php b/app/controller/user/UserUsecase.php
similarity index 93%
rename from server/app/user/UserUsecase.php
rename to app/controller/user/UserUsecase.php
index a8952ec..84b14aa 100644
--- a/server/app/user/UserUsecase.php
+++ b/app/controller/user/UserUsecase.php
@@ -1,6 +1,6 @@
 <?php
-    require_once __ROOT__.'/app/user/UserDb.php';
-    require_once __ROOT__.'/app/user/User.php';
+    require_once __ROOT__.'/app/controller/user/UserDb.php';
+    require_once __ROOT__.'/app/controller/user/User.php';
     require_once __ROOT__.'/util/Routing/Response.php';
 
     class UserUsecase {
@@ -70,7 +70,9 @@
             }
         }
 
-
+        function authenticateUser(Request $request){
+            
+        }
     }
 
 ?>
\ No newline at end of file
diff --git a/server/app/user/routes.php b/app/controller/user/routes.php
similarity index 73%
rename from server/app/user/routes.php
rename to app/controller/user/routes.php
index b2a81b1..f94fd4e 100644
--- a/server/app/user/routes.php
+++ b/app/controller/user/routes.php
@@ -1,14 +1,11 @@
 <?php
-
     function addUserRoutes($router, $userUsecase){
         $router->add("/user/", "POST", array($userUsecase,'registerUser'));
-        $router->add("/user/search/", "GET", function($request){
-            $queries = $request->queries;
-            var_dump($queries);
-        });
         $router->add("/user/:user_id/", "DELETE", array($userUsecase,'removeUser'));
         $router->add("/user/:user_id/", "GET", array($userUsecase,'getProfile'));
         $router->add("/user/:user_id/", "PUT", array($userUsecase,'editProfile'));
+        // Auth
+        $router->add("/auth/login/", "POST", array($userUsecase,'authenticateUser'));
         return $router;
     }
 
diff --git a/client/app/history.php b/app/view/history.php
similarity index 100%
rename from client/app/history.php
rename to app/view/history.php
diff --git a/app/view/homepage.php b/app/view/homepage.php
new file mode 100644
index 0000000..51aa1b9
--- /dev/null
+++ b/app/view/homepage.php
@@ -0,0 +1,9 @@
+<?php
+    
+    $homepage = function() {
+        // include __ROOT__.'/static/html/index.html';
+        $result = json_decode(http_get('localhost:4000/user/2/'));
+        echo($result);
+    }
+
+?>
\ No newline at end of file
diff --git a/client/app/profile.php b/app/view/profile.php
similarity index 100%
rename from client/app/profile.php
rename to app/view/profile.php
diff --git a/client/static/html/index.html b/app/view/static/html/index.html
similarity index 100%
rename from client/static/html/index.html
rename to app/view/static/html/index.html
diff --git a/client/app/homepage.php b/client/app/homepage.php
deleted file mode 100644
index 5fac71f..0000000
--- a/client/app/homepage.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-    
-    $homepage = function() {
-        include __ROOT__.'/static/html/index.html';
-    }
-
-?>
\ No newline at end of file
diff --git a/client/public/index.php b/client/public/index.php
deleted file mode 100644
index 9f52800..0000000
--- a/client/public/index.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-    define('__ROOT__', dirname(dirname(__FILE__)));
-
-    
-    require_once __ROOT__.'/util/Routing/Router.php';
-    require_once __ROOT__.'/app/homepage.php';
-    require_once __ROOT__.'/app/history.php';
-    require_once __ROOT__.'/app/profile.php';
-    
-
-    $router = new Router();
-
-    $router->add("/", "GET", $homepage);
-    $router->add("/profile/", "GET", $historyPage);
-    $router->add("/history/", "GET", $profilePage);
-
-    $uri = $_SERVER["PATH_INFO"];
-    $method = $_SERVER["REQUEST_METHOD"];
-
-    $router->route($uri, $method);
-?>
\ No newline at end of file
diff --git a/client/util/Routing/Request.php b/client/util/Routing/Request.php
deleted file mode 100644
index ba6d58f..0000000
--- a/client/util/Routing/Request.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-    class Request {
-        public $params = array();
-        public $payload = array();
-        public $header = array();
-
-        function __construct(array $params, array $payload, $header){
-            $this->params = $params;
-            $this->payload = $payload;
-            $this->header = $header;
-        }
-    }
-
-?>
\ No newline at end of file
diff --git a/client/util/Routing/Router.php b/client/util/Routing/Router.php
deleted file mode 100644
index b92e8fb..0000000
--- a/client/util/Routing/Router.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-    require_once 'Request.php';
-    require_once 'IMiddleware.php';
-
-    class Router {
-        // Array of routes and its callback
-        private $routes = array();  
-        // Array of patterns for params matching
-        private $paramPatterns = array();
-        // Array of param keys to be searched
-        private $paramKeys = array();
-
-        private function __makeParamPattern($url){
-            $url_components = explode("/", $url);
-            $paramPattern = "^\/";
-            foreach($url_components as $url_component){
-                if ($url_component != ""){
-                    if (preg_match('(:.*)',$url_component)){
-                        preg_match('(:.*)',$url_component, $paramName);
-                        $param = substr($paramName[0],1);
-                        array_push($this->paramKeys, $param);
-                        $paramPattern .= "(?P"."<$param>"."\d+)\/";
-                    }
-                    else {
-                        $paramPattern .= "(".$url_component.")\/"; 
-                    }
-                }
-            }
-            $paramPattern.= "$";
-
-            return $paramPattern;
-        }
-
-        private function __parseParams($url){
-            $request_params = array();
-            $param_matches = array();
-
-            foreach($this->paramPatterns as $paramPattern){
-                if (preg_match('('.$paramPattern.')', $url, $matches, PREG_OFFSET_CAPTURE)){
-                    $param_matches = $matches;
-                }
-            }
-
-            foreach($this->paramKeys as $param){
-                if (array_key_exists($param, $param_matches)){
-                    $request_params[$param] = $param_matches[$param][0];
-                }
-            }
-
-            return $request_params;
-        }
-
-        private function __getRouteFromPattern($url, $method){
-            foreach ($this->routes as $key=>$value){
-                if (preg_match("($key)", $url) && array_key_exists($method, $value)){
-                    return $value[$method];
-                }
-            }
-
-            return null;
-        }
-
-        function add(string $url, string $method, $callback, IMiddleware $middleware = null) {
-            $urlPattern = $this->__makeParamPattern($url);
-            $this->routes[$urlPattern][$method] = array("callback"=>$callback, "middleware"=>$middleware);
-            array_push($this->paramPatterns, $urlPattern);
-        }
-        
-        function route(string $requestUrl, string $method, $errorCallback = null) {
-            $route = $this->__getRouteFromPattern($requestUrl, $method);
-            
-            if ($route!= null) {
-                // get params
-                $params = $this->__parseParams($requestUrl);
-                // get payload
-                parse_str(file_get_contents("php://input"), $payload);                
-                // get header
-                $headers = getallheaders();
-
-                $request = new Request($params, $payload, $headers);
-
-                if ($route["middleware"]){
-                    $route["middleware"]->run($route["callback"], $request);
-                } else {
-                    $route["callback"]($request);
-                }
-            } else {
-                if ($errorCallback){
-                    $errorCallback();
-                }
-            }
-        }
-    }
-?>
\ No newline at end of file
diff --git a/server/config/devel.php b/config/devel.php
similarity index 80%
rename from server/config/devel.php
rename to config/devel.php
index 1c435c3..56fede7 100644
--- a/server/config/devel.php
+++ b/config/devel.php
@@ -5,6 +5,7 @@
             "user" => "root",
             "password" => "rahasiailahi",
             "db_name" => "tayo_book_store"
-        )
+        ),
+        "base_url" => "localhost:4000/"
     )
 ?>
\ No newline at end of file
diff --git a/server/db/db schema.png b/db/db schema.png
similarity index 100%
rename from server/db/db schema.png
rename to db/db schema.png
diff --git a/server/db/tayo_book_store.sql b/db/tayo_book_store.sql
similarity index 100%
rename from server/db/tayo_book_store.sql
rename to db/tayo_book_store.sql
diff --git a/server/db/tayo_book_store_dummy.sql b/db/tayo_book_store_dummy.sql
similarity index 100%
rename from server/db/tayo_book_store_dummy.sql
rename to db/tayo_book_store_dummy.sql
diff --git a/server/public/index.php b/public/index.php
similarity index 62%
rename from server/public/index.php
rename to public/index.php
index 73d339b..803ebeb 100644
--- a/server/public/index.php
+++ b/public/index.php
@@ -5,24 +5,23 @@
     require_once __ROOT__.'/util/Routing/Request.php';
     require_once __ROOT__.'/util/Database.php';
     // book
-    require_once __ROOT__.'/app/book/BookUsecase.php';
-    require_once __ROOT__.'/app/book/BookDb.php';
+    require_once __ROOT__.'/app/controller/book/BookUsecase.php';
+    require_once __ROOT__.'/app/controller/book/BookDb.php';
     // order
-    require_once __ROOT__.'/app/order/OrderUsecase.php';
-    require_once __ROOT__.'/app/order/OrderDb.php';
+    require_once __ROOT__.'/app/controller/order/OrderUsecase.php';
+    require_once __ROOT__.'/app/controller/order/OrderDb.php';
     // user
-    require_once __ROOT__.'/app/user/UserUsecase.php';
-    require_once __ROOT__.'/app/user/UserDb.php';
-
+    require_once __ROOT__.'/app/controller/user/UserUsecase.php';
+    require_once __ROOT__.'/app/controller/user/UserDb.php';
     // routes
-    require_once __ROOT__.'/app/book/routes.php';
-    require_once __ROOT__.'/app/order/routes.php';
-    require_once __ROOT__.'/app/user/routes.php';
+    require_once __ROOT__.'/app/controller/book/routes.php';
+    require_once __ROOT__.'/app/controller/order/routes.php';
+    require_once __ROOT__.'/app/controller/user/routes.php';
 
     $conn = Database::createDBConnection($APP_CONFIG["db"]["host"], 
                                         $APP_CONFIG["db"]["user"], $APP_CONFIG["db"]["password"], 
                                         $APP_CONFIG["db"]["db_name"]);
-    
+                                        
     $userDb = new UserDb($conn);
     $userUsecase = new UserUsecase($userDb);
 
diff --git a/server/util/Routing/IMiddleware.php b/server/util/Routing/IMiddleware.php
deleted file mode 100644
index fddf20b..0000000
--- a/server/util/Routing/IMiddleware.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-    require_once 'Request.php';
-
-    interface IMiddleware {
-        function run($next, Request $nextRequest);
-    }
-
-
-?>
\ No newline at end of file
diff --git a/server/util/Database.php b/util/Database.php
similarity index 100%
rename from server/util/Database.php
rename to util/Database.php
diff --git a/client/util/Routing/IMiddleware.php b/util/Routing/IMiddleware.php
similarity index 100%
rename from client/util/Routing/IMiddleware.php
rename to util/Routing/IMiddleware.php
diff --git a/server/util/Routing/Request.php b/util/Routing/Request.php
similarity index 100%
rename from server/util/Routing/Request.php
rename to util/Routing/Request.php
diff --git a/server/util/Routing/Response.php b/util/Routing/Response.php
similarity index 100%
rename from server/util/Routing/Response.php
rename to util/Routing/Response.php
diff --git a/server/util/Routing/Router.php b/util/Routing/Router.php
similarity index 100%
rename from server/util/Routing/Router.php
rename to util/Routing/Router.php
diff --git a/server/util/autoloader.php b/util/autoloader.php
similarity index 100%
rename from server/util/autoloader.php
rename to util/autoloader.php
-- 
GitLab