1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package handlers
- import (
- "byom-infra-api/config"
- "encoding/json"
- "log"
- "net/http"
- "github.com/gorilla/mux"
- )
- type SSHKey struct {
- KeyName string `json:"keyName"`
- Key string `json:"key"`
- }
- type SSHKeyHandler struct{}
- func NewSSHKeyHandler() *SSHKeyHandler {
- return &SSHKeyHandler{}
- }
- // GetSSHKeys handles the retrieval of all SSH keys
- func (h *SSHKeyHandler) GetSSHKeys(w http.ResponseWriter, r *http.Request) {
- log.Printf("Handling GET request for all SSH keys from %s", r.RemoteAddr)
- // First, get the list of SSH key IDs
- var keyIDs []string
- err := config.OVHClient.Get("/me/sshKey", &keyIDs)
- if err != nil {
- log.Printf("Error fetching SSH key IDs: %v", err)
- http.Error(w, "Failed to fetch SSH keys: "+err.Error(), http.StatusInternalServerError)
- return
- }
- // Then fetch details for each key
- var sshKeys []SSHKey
- for _, id := range keyIDs {
- var key SSHKey
- err := config.OVHClient.Get("/me/sshKey/"+id, &key)
- if err != nil {
- log.Printf("Error fetching details for SSH key %s: %v", id, err)
- continue
- }
- sshKeys = append(sshKeys, key)
- }
- log.Printf("Successfully retrieved %d SSH keys", len(sshKeys))
- w.Header().Set("Content-Type", "application/json")
- if err := json.NewEncoder(w).Encode(sshKeys); err != nil {
- log.Printf("Error encoding SSH keys response: %v", err)
- http.Error(w, "Failed to encode response", http.StatusInternalServerError)
- return
- }
- }
- // GetSSHKeyByID handles the retrieval of a specific SSH key by ID
- func (h *SSHKeyHandler) GetSSHKeyByID(w http.ResponseWriter, r *http.Request) {
- vars := mux.Vars(r)
- keyID := vars["id"]
- log.Printf("Handling GET request for SSH key ID: %s from %s", keyID, r.RemoteAddr)
- var sshKey SSHKey
- err := config.OVHClient.Get("/me/sshKey/"+keyID, &sshKey)
- if err != nil {
- log.Printf("Error fetching SSH key %s: %v", keyID, err)
- http.Error(w, "Failed to fetch SSH key: "+err.Error(), http.StatusInternalServerError)
- return
- }
- log.Printf("Successfully retrieved SSH key: %s", keyID)
- w.Header().Set("Content-Type", "application/json")
- if err := json.NewEncoder(w).Encode(sshKey); err != nil {
- log.Printf("Error encoding SSH key response: %v", err)
- http.Error(w, "Failed to encode response", http.StatusInternalServerError)
- return
- }
- }
|