-
Andrej Ramašeuski authoredAndrej Ramašeuski authored
main.go 1.09 KiB
package main
import (
"fmt"
"log"
"path"
"embed"
"strings"
"net/http"
"pirates/piratar/octopus"
)
//go:embed default.jpg
var fs embed.FS
func main() {
http.HandleFunc("/", handler)
port := 3000 // TODO: ENV
fmt.Printf("Piratar service listening on port %d...\n", port)
if err := http.ListenAndServe(fmt.Sprintf(":%d", port), nil); err != nil {
log.Fatalf("Server failed: %v", err)
}
}
func handler(w http.ResponseWriter, r *http.Request) {
// Extrakce username nebo UUID
id := strings.ToLower(path.Base(r.URL.Path))
if dotIndex := strings.LastIndex(id, "."); dotIndex != -1 {
id = id[:dotIndex]
}
// Profilova fotka nebo default
if photo, err := octopus.ProfilePhoto(id); err == nil {
fmt.Printf("Piratar for %s: %s\n", id, photo)
http.Redirect(w, r, photo, http.StatusFound)
} else {
fmt.Printf("Piratar for %s not found\n", id)
avatar, _ := fs.ReadFile("default.jpg")
w.Header().Set("Content-Type", "image/jpeg")
w.Header().Set("Content-Length", fmt.Sprintf("%d", len(avatar)))
w.Write(avatar)
}
}