From 509b7f827029df4905e22d449b137235269d906e Mon Sep 17 00:00:00 2001
From: Jonas Leder <jonas@jonasled.de>
Date: Thu, 18 Nov 2021 06:57:53 +0000
Subject: [PATCH] dynamic load skills from S3 server

---
 js/customElements/skills.js | 17 ++++++++++++-----
 public/API/skills.php       | 24 ++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 5 deletions(-)
 create mode 100644 public/API/skills.php

diff --git a/js/customElements/skills.js b/js/customElements/skills.js
index d1938b8..2c717cb 100644
--- a/js/customElements/skills.js
+++ b/js/customElements/skills.js
@@ -1,11 +1,18 @@
 class Skill extends HTMLElement {
     constructor() {
         super();
-        ["python", "php", "sass", "css", "c_sharp", "html", "java", "arduino", "raspberry", "linux", "arch", "gitlab", "traefik", "proxmox"].forEach( skill => {
-            const image = document.createElement("img");
-            image.src = "/API/getFile.php?filename=skills/" + skill + ".png";
-            this.appendChild(image);
-        })
+        let xhr = new XMLHttpRequest();
+        xhr.onreadystatechange = () => {
+            if (xhr.readyState == 4 && xhr.status == 200) {
+                JSON.parse(xhr.responseText).forEach(skill => {
+                    const image = document.createElement("img");
+                    image.src = "/API/getFile.php?filename=" + skill;
+                    this.appendChild(image);
+                });
+            }
+        }
+        xhr.open("GET", "/API/skills.php");
+        xhr.send();
     }
 }
 
diff --git a/public/API/skills.php b/public/API/skills.php
new file mode 100644
index 0000000..28116e7
--- /dev/null
+++ b/public/API/skills.php
@@ -0,0 +1,24 @@
+<?php
+include("./lib/config.php");
+require 'vendor/autoload.php';
+
+$s3Client = new Aws\S3\S3Client([
+        'version' => 'latest',
+        'region'  => 'us-east-1',
+        'endpoint' => $S3Server,
+        'use_path_style_endpoint' => true,
+        'credentials' => [
+                'key'    => $S3AccessKey,
+                'secret' => $S3SecretKey,
+            ],
+]);
+
+$result = $s3Client->ListObjects(['Bucket' => $S3BucketName, 'Delimiter'=>'/', 'Prefix' => 'skills/']);
+
+$response = [];
+foreach ($result["Contents"] as $skill){
+        array_push($response, $skill["Key"]);
+}
+
+header("Content-Type: application/json");
+echo json_encode($response);
\ No newline at end of file
-- 
GitLab