this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 52 lines 1.2 kB view raw
1package main 2 3import ( 4 "context" 5 "os" 6 "os/signal" 7 8 "github.com/Tulkdan/payment-gateway/internal/providers" 9 "github.com/Tulkdan/payment-gateway/internal/service" 10 "github.com/Tulkdan/payment-gateway/internal/web" 11 "go.uber.org/zap" 12) 13 14func getEnv(key, defaultValue string) string { 15 if value := os.Getenv(key); value != "" { 16 return value 17 } 18 return defaultValue 19} 20 21func main() { 22 ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt) 23 defer stop() 24 25 logger, _ := zap.NewDevelopment() 26 defer logger.Sync() 27 28 providers := providers.NewUseProviders([]providers.Provider{ 29 providers.NewBraintreeProvider(getEnv("BRAINTREE_URL", "http://localhost:8001"), logger), 30 providers.NewStripeProvider(getEnv("STRIPE_URL", "http://localhost:8002"), logger), 31 }, logger) 32 paymentsService := service.NewPaymentService(providers) 33 34 port := getEnv("PORT", "8000") 35 server := web.NewServer(paymentsService, port, logger) 36 server.ConfigureRouter() 37 38 srvErr := make(chan error, 1) 39 go func() { 40 logger.Info("Starting server", zap.String("port", port)) 41 srvErr <- server.Start(ctx) 42 }() 43 44 select { 45 case <-srvErr: 46 return 47 case <-ctx.Done(): 48 stop() 49 } 50 51 server.Shutdown() 52}