package main import ( "flag" "fmt" "log" "net/http" "git.chrishayward.xyz/x/users/gateway" "git.chrishayward.xyz/x/users/proto" "google.golang.org/grpc" ) var ( port = flag.Int("port", 8081, "--port=8081") domain = flag.String("domain", "http://localhost", "--domain=localhost") serverAddr = flag.String("serverAddr", "localhost", "--serverAddr=localhost") serverPort = flag.Int("serverPort", 8080, "--serverPort=8080") serverSecret = flag.String("serverSecret", "...", "--serverSecret=...") ) func authorized(f http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { } } func main() { // Parse the optional flags. flag.Parse() // Create the connection to the server. conn, err := grpc.Dial(fmt.Sprintf("%s:%d", *serverAddr, *serverPort)) if err != nil { log.Fatal(err) } // Defer closing the connection. defer conn.Close() // Create the client. client := proto.NewUsersClient(conn) // Setup HTTP endpoints. http.HandleFunc("/register", gateway.Register(client)) http.HandleFunc("/login", gateway.Login(client)) http.HandleFunc("/reset_password", gateway.Authorize(client, serverSecret, gateway.ResetPassword(client, fmt.Sprintf("%s, %d", *domain, *port)))) http.HandleFunc("/change_password", gateway.Authorize(client, serverSecret, gateway.ChangePassword(client))) // Listen for requests. log.Printf("Forwarding from :%d to %s:%d", *port, *serverAddr, *serverPort) if err := http.ListenAndServe(fmt.Sprintf(":%d", *port), nil); err != nil { log.Fatal(err) } }