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