From 4ed5b534890bd91e532f6944d31cc4ec6abb663e Mon Sep 17 00:00:00 2001
From: HobertJ <13521079@std.stei.itb.ac.id>
Date: Thu, 16 Nov 2023 22:51:13 +0700
Subject: [PATCH] feat: add post subscription endpoint

---
 .../subscription/post_subscription.php        | 46 +++++++++++++++++++
 src/app/core/app.php                          |  1 +
 src/app/init.php                              |  1 +
 3 files changed, 48 insertions(+)
 create mode 100644 src/app/controllers/subscription/post_subscription.php

diff --git a/src/app/controllers/subscription/post_subscription.php b/src/app/controllers/subscription/post_subscription.php
new file mode 100644
index 0000000..77c3321
--- /dev/null
+++ b/src/app/controllers/subscription/post_subscription.php
@@ -0,0 +1,46 @@
+<?php
+
+class PostSubscribeController
+{
+  public function call() {
+    $xml = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://services.soapserver/">
+              <soap:Header>
+                <tns:apiKey>ularmelingkardiataspagar</tns:apiKey>
+              </soap:Header>
+              <soap:Body>
+                <tns:addSubscription>
+                  <idUser>8</idUser>
+                </tns:addSubscription>
+              </soap:Body>
+            </soap:Envelope>';
+
+    $ch = curl_init();
+    curl_setopt($ch, CURLOPT_URL, "http://tubes-soap-service:8000/subscription");
+    curl_setopt($ch, CURLOPT_HTTPHEADER, [
+      "Content-type: text/xml;charset=\"utf-8\"",
+      "Accept: text/xml",
+      "Cache-Control: no-cache",
+      "Pragma: no-cache",
+      "SOAPAction: http://soapserver/SubscriptionService/addSubscriptionRequest", 
+      "Content-length: ".strlen($xml)
+    ]);
+    curl_setopt(
+      $ch,
+      CURLOPT_POSTFIELDS,
+      $xml
+    );
+    curl_setopt($ch, CURLOPT_POST, true);
+    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+
+    $output = curl_exec($ch);
+    curl_close($ch);
+
+    http_response_code(201);
+    header('Content-type: application/json');
+    echo json_encode(["message" => "success"]);
+
+    exit;
+  }
+}
\ No newline at end of file
diff --git a/src/app/core/app.php b/src/app/core/app.php
index 7fab00d..bb172a5 100644
--- a/src/app/core/app.php
+++ b/src/app/core/app.php
@@ -61,6 +61,7 @@ class App
     $router->post("public/dashboard/edit-episode", new PostEditEpisodeController());
     $router->post("public/dashboard/add-podcast", new PostAddPodcastController());
     $router->post("public/dashboard/edit-podcast", new PostEditPodcastController());
+    $router->post("public/subscribe", new PostSubscribeController());
 
     // DELETE routes
     $router->delete("public/dashboard/episode", new DeleteEpisodeController());
diff --git a/src/app/init.php b/src/app/init.php
index 17801be..95ef59f 100644
--- a/src/app/init.php
+++ b/src/app/init.php
@@ -44,6 +44,7 @@ require_once __DIR__ . "/controllers/signup/post_signup.php";
 require_once __DIR__ . "/controllers/search/get_search.php";
 require_once __DIR__ . "/controllers/profile/get_profile.php";
 require_once __DIR__ . "/controllers/profile/update_profile.php";
+require_once __DIR__ . "/controllers/subscription/post_subscription.php";
 
 require_once __DIR__ . "/controllers/player/mount_player.php";
 require_once __DIR__ . "/controllers/player/get_episode_played.php";
-- 
GitLab