From 8087897879ec305fec74fae5e1757df96e318c4d Mon Sep 17 00:00:00 2001 From: Fawwaz Anugrah Wiradhika Dharmasatya <13520086.std.stei.itb.ac.id> Date: Thu, 1 Dec 2022 07:03:49 +0700 Subject: [PATCH] feat:menambahkan endpoint buat requewst sub sambil nyabun --- .env.example | 2 +- Controller/SubsciberController.php | 19 ++++++++++++++++--- Router/PremiumRouter.php | 1 + Service/Soap/SubscribeSoap.php | 24 +++++++++++++++++++++--- View/Pages/PremiumSinger.php | 3 ++- static/js/premium-singer.js | 11 +++++++++-- 6 files changed, 50 insertions(+), 10 deletions(-) diff --git a/.env.example b/.env.example index e8b2272..0628e8d 100644 --- a/.env.example +++ b/.env.example @@ -9,4 +9,4 @@ POSTGRES_PASSWORD=root API_KEY=secret SOAP_HOST=http://webtune-soap:8080/webtune-soap REST_HOST=http://webtune-rest:8888 -REST_KEY=apahayo \ No newline at end of file +REST_KEY=secret_turu \ No newline at end of file diff --git a/Controller/SubsciberController.php b/Controller/SubsciberController.php index 7bda460..9336f6d 100644 --- a/Controller/SubsciberController.php +++ b/Controller/SubsciberController.php @@ -8,6 +8,7 @@ use Lib\Interfaces\Routing\IRequest; use Lib\Interfaces\Routing\IResponse; use Model\Relations\Subscription; use Lib\Service\Api\FetchAPI; +use Service\Soap\SubscribeSoap; class SubsciberController { @@ -155,15 +156,13 @@ class SubsciberController ]; $rest_key = getenv("REST_KEY"); $headers = [ - "X-API-KEY" => $rest_key + "X-API-KEY: $rest_key", //NOTE: buat header, harus array of lines ]; $output = $fetcher->get("/singers", $param, $headers); - if (!$output) { return false; } $data = json_decode($output, true)["data"]; - //tambahin status berlangganan $subscriber = new Subscription($db); $transaction = $subscriber->transaction(); @@ -248,4 +247,18 @@ class SubsciberController // "data"=>$data // ]); } + + static function subscribeSinger(IRequest $req, IResponse $res){ + $request_data = $req->formData(); + $singer_id = $request_data["singer-id"]; + $user_id = $request_data["user-id"]; + + $nyabun_client = new SubscribeSoap(); + $nyabun_client->requestSubscription($singer_id,$user_id); + + return $res->json([ + "status"=>"success", + "message"=>"subscription request sent to the server successfully!", + ]); + } }; \ No newline at end of file diff --git a/Router/PremiumRouter.php b/Router/PremiumRouter.php index 192e495..0e1ae49 100644 --- a/Router/PremiumRouter.php +++ b/Router/PremiumRouter.php @@ -11,6 +11,7 @@ class PremiumRouter{ $route = new (Dependency::get_dependency(IRoute::class)); //dapetin list penyanyi permium $route->route(HttpMethod::Get,"/premium",[SubsciberController::class,"getPremiumSinger"]); + $route->route(HttpMethod::Post,"/premium/subscribe",[SubsciberController::class,"subscribeSinger"]); return $route; } diff --git a/Service/Soap/SubscribeSoap.php b/Service/Soap/SubscribeSoap.php index 81b88b4..7db84a1 100644 --- a/Service/Soap/SubscribeSoap.php +++ b/Service/Soap/SubscribeSoap.php @@ -2,11 +2,13 @@ namespace Service\Soap; -class SubscribeSoap { +class SubscribeSoap +{ private SoapClientFactory $factory; - public function __construct() { - $wsdl = getenv("SOAP_API"). "/services/subscription?wsdl"; + public function __construct() + { + $wsdl = getenv("SOAP_API") . "/services/subscription?wsdl"; $this->factory = new SoapClientFactory($wsdl); } @@ -25,4 +27,20 @@ class SubscribeSoap { ] ); } + + public function requestSubscription( + string $singer_id, + string $user_id, + ?string $last_token = null + ) { + $soap = $this->factory->generate_client($last_token); + + return $soap->__soapCall( + "requestSubscription", + [ + "creator-id" => $singer_id, + "subscriber-id" => $user_id, + ] + ); + } } diff --git a/View/Pages/PremiumSinger.php b/View/Pages/PremiumSinger.php index 77bc4b2..382b30a 100644 --- a/View/Pages/PremiumSinger.php +++ b/View/Pages/PremiumSinger.php @@ -10,7 +10,8 @@ "/static/css/form.css" ], "scripts"=>[ - "/static/js/premium-singer.js" + "/static/js/premium-singer.js", + "/static/js/http.js" ], ]); ?> diff --git a/static/js/premium-singer.js b/static/js/premium-singer.js index 50e363a..55f14cd 100644 --- a/static/js/premium-singer.js +++ b/static/js/premium-singer.js @@ -1,4 +1,11 @@ -function subscribe(singer_id, user_id){ +async function subscribe(singer_id, user_id){ let formData = new FormData() - //nembak ke soap + //nembak ke php dulu baru nyabun + formData.append("singer-id",singer_id) + formData.append("user-id",user_id) + + const { data:status} = await http.post("/premium/subscribe",formData,{ + json:false, + }) + console.log(status) } \ No newline at end of file -- GitLab