package main import ( "context" "log" "fusen-basic/env" "fusen-gateway/gen/go/service" "fusen-gateway/server/config" "fusen-gateway/server/logic" "net/http" "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" ) func main() { fusen := env.NewFusen[config.Config]() fusen.StartNacos(nil) service.AutoGrpcInit(fusen) ctx := context.Background() ctx, cancel := context.WithCancel(ctx) defer cancel() mux := runtime.NewServeMux( runtime.WithErrorHandler(func(ctx context.Context, sm *runtime.ServeMux, m runtime.Marshaler, w http.ResponseWriter, r *http.Request, err error) { log.Println(err) w.Write([]byte("gateway: " + err.Error())) }), runtime.WithMetadata(logic.PassMetadata), runtime.WithForwardResponseOption(logic.ResponseHeaderMatcher), runtime.WithMarshalerOption("*", &logic.EmptyMarshaler{}), ) opts := []grpc.DialOption{ grpc.WithUnaryInterceptor(func(ctx context.Context, method string, req, reply any, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error { log.Println(method) return invoker(ctx, method, req, reply, cc, opts...) }), grpc.WithTransportCredentials(insecure.NewCredentials()), } err := logic.AutoRegisterHandler(ctx, mux, opts...) if err != nil { panic(err) } err = http.ListenAndServe(":9900", mux) if err != nil { panic(err) } }