53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
)
|
|
|
|
type BackendRequest struct {
|
|
Resource string `json:"resource"`
|
|
Token string `json:"token"`
|
|
Headers map[string]string `json:"headers"`
|
|
}
|
|
|
|
type BackendResponse struct {
|
|
DatabaseURL string `json:"database_url"`
|
|
}
|
|
|
|
func main() {
|
|
resources := map[string]string{
|
|
"id1": "postgres://localhost:5432/db1?sslmode=disable",
|
|
"id2": "postgres://localhost:5432/db2?sslmode=disable",
|
|
"id3": "postgres://localhost:5432/db3?sslmode=disable",
|
|
}
|
|
|
|
http.HandleFunc("/", func(rw http.ResponseWriter, req *http.Request) {
|
|
backendReq := BackendRequest{}
|
|
|
|
if err := json.NewDecoder(req.Body).Decode(&backendReq); err != nil {
|
|
rw.WriteHeader(400)
|
|
fmt.Fprintf(rw, "error while parsing request: %v", err)
|
|
return
|
|
}
|
|
|
|
res, ok := resources[backendReq.Resource]
|
|
if !ok {
|
|
rw.WriteHeader(404)
|
|
return
|
|
}
|
|
|
|
resp := BackendResponse{
|
|
DatabaseURL: res,
|
|
}
|
|
|
|
json.NewEncoder(rw).Encode(resp)
|
|
})
|
|
|
|
if err := http.ListenAndServe(":4567", nil); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|