// This file is a part of Taskflow. // Copyright (C) 2025 Robby Zambito // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . package main import ( "encoding/json" "fmt" "net/http" "git.robbyzambito.me/taskflow/internal/api" ) // Example: // curl 'http://localhost:8080/api/v1/auth/login' -X POST -H 'Content-Type: application/json' --data-raw $'{}}\n{"king": "key"' func main() { var logs [api.LogLength]string n := 0 king := "NOKING" toLogParser := make(chan string) go parser(toLogParser, &king) api.InitializeAPI(&logs, &n, toLogParser) http.HandleFunc("/", api.CreateFilesHandler(&logs, &n, toLogParser)) http.HandleFunc("/logs", api.CreateGetLogs(&logs)) http.HandleFunc("/api/v1/logs", api.CreateGetLogs(&logs)) http.HandleFunc("/api/v1/auth/login", api.CreateLoginHandler(&logs, &n, toLogParser)) http.HandleFunc("/api/v1/king", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, king) }) http.HandleFunc("/api/v1/status", api.StatusHandler) http.HandleFunc("/api/v1/status/services", api.StatusServicesHandler) http.HandleFunc("/api/v1/status/metrics", api.StatusMetricsHandler) http.HandleFunc("/api/v1/status/incidents", api.StatusIncidentsHandler) http.HandleFunc("/api/v1/status/maintenance", api.StatusMaintenanceHandler) http.HandleFunc("/api/v1/status/uptime", api.StatusUptimeHandler) http.HandleFunc("/api/v1/status/subscribe", api.CreateStatusSubscribeHandler(&logs, &n, toLogParser)) http.HandleFunc("/api/v1/contact", api.CreateContactHandler(&logs, &n, toLogParser)) // Start the server on port 8080 fmt.Println("Server is listening on port 8080...") err := http.ListenAndServe(":8080", nil) if err != nil { fmt.Printf("Error starting server: %s\n", err) } } func parser(input chan string, king *string) { for value := range input { var data map[string]any if json.Unmarshal([]byte(value), &data) == nil { if k, ok := data["king"].(string); ok { *king = k } } } }