f-21: add first api file

Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
GnomeZworc 2026-04-12 17:29:37 +02:00
commit 9ad407755b
Signed by: nicolas.boufideline
GPG key ID: 4406BBBF8845D632
5 changed files with 104 additions and 0 deletions

View file

@ -0,0 +1,16 @@
package agentapi
import (
"log"
"net/http"
)
func Start(address string) {
mux := http.NewServeMux()
mux.HandleFunc("/vpcs", VpcsHandler)
mux.HandleFunc("/vpcs/", VpcByNameHandler)
mux.HandleFunc("/subnets", SubnetsHandler)
mux.HandleFunc("/subnets/", SubnetByNameHandler)
log.Printf("API server listening on %s", address)
log.Fatal(http.ListenAndServe(address, mux))
}

View file

@ -0,0 +1,25 @@
package agentapi
import (
"encoding/json"
"net/http"
"strings"
)
func SubnetByNameHandler(w http.ResponseWriter, r *http.Request) {
name := strings.TrimPrefix(r.URL.Path, "/subnets/")
if name == "" {
http.NotFound(w, r)
return
}
w.Header().Set("Content-Type", "application/json")
switch r.Method {
case http.MethodGet:
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(map[string]string{"name": name})
case http.MethodDelete:
w.WriteHeader(http.StatusAccepted)
default:
http.Error(w, "method not allowed", http.StatusMethodNotAllowed)
}
}

View file

@ -0,0 +1,19 @@
package agentapi
import (
"encoding/json"
"net/http"
)
func SubnetsHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
switch r.Method {
case http.MethodGet:
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode([]interface{}{})
case http.MethodPost:
w.WriteHeader(http.StatusAccepted)
default:
http.Error(w, "method not allowed", http.StatusMethodNotAllowed)
}
}

25
internal/api/agent/vpc.go Normal file
View file

@ -0,0 +1,25 @@
package agentapi
import (
"encoding/json"
"net/http"
"strings"
)
func VpcByNameHandler(w http.ResponseWriter, r *http.Request) {
name := strings.TrimPrefix(r.URL.Path, "/vpcs/")
if name == "" {
http.NotFound(w, r)
return
}
w.Header().Set("Content-Type", "application/json")
switch r.Method {
case http.MethodGet:
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(map[string]string{"name": name})
case http.MethodDelete:
w.WriteHeader(http.StatusAccepted)
default:
http.Error(w, "method not allowed", http.StatusMethodNotAllowed)
}
}

View file

@ -0,0 +1,19 @@
package agentapi
import (
"encoding/json"
"net/http"
)
func VpcsHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
switch r.Method {
case http.MethodGet:
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode([]interface{}{})
case http.MethodPost:
w.WriteHeader(http.StatusAccepted)
default:
http.Error(w, "method not allowed", http.StatusMethodNotAllowed)
}
}