in fleet-argocd-plugin/main.go [88:128]
func Reply(w http.ResponseWriter, r *http.Request) {
// Decode incoming plugin request.
var request PluginRequest
err := json.NewDecoder(r.Body).Decode(&request)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
// Validate parameters.
projectNum := request.Input.Parameters.FleetProjectNumber
if projectNum == "" {
http.Error(w, "Missing required parameter FleetProjectNumber", http.StatusBadRequest)
return
}
if projectNum != fleetSync.ProjectNum {
http.Error(w, "Invalid fleetProjectNumber in request, doesn't match FLEET_PROJECT_NUMBER specified in the Fleet plugin", http.StatusBadRequest)
return
}
scopeID := request.Input.Parameters.ScopeID
res, err := fleetSync.PluginResults(context.Background(), scopeID)
if err != nil {
fmt.Printf("Error rendering result: %v\n", err)
http.Error(w, "Error rendering result", http.StatusInternalServerError)
}
// Encode plugin response.
response := PluginResponse{
Output{
Parameters: res,
},
}
jsonData, err := json.Marshal(response)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")
w.Write(jsonData)
fmt.Printf("%+v\n", response)
fmt.Println("-------------------------------------------")
}