| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | package mainimport (	"context"	"flag"	"fmt"	"github.com/longjoy/micro-go-course/section32/config"	"github.com/longjoy/micro-go-course/section32/endpoint"	"github.com/longjoy/micro-go-course/section32/service"	"github.com/longjoy/micro-go-course/section32/transport"	"net/http"	"os"	"os/signal"	"strconv"	"syscall")func main() {	var (		servicePort = flag.Int("service.port", 10099, "service port")	)	flag.Parse()	ctx := context.Background()	errChan := make(chan error)	var tokenService service.ResourceServerTokenService	var tokenEnhancer service.TokenEnhancer	var tokenStore service.TokenStore	var srv service.Service	tokenEnhancer = service.NewJwtTokenEnhancer("secret")	tokenStore = service.NewJwtTokenStore(tokenEnhancer.(*service.JwtTokenEnhancer))	tokenService = service.NewTokenService(tokenStore, tokenEnhancer)	srv = service.NewCommonService()	indexEndpoint := endpoint.MakeIndexEndpoint(srv)	sampleEndpoint := endpoint.MakeSampleEndpoint(srv)	sampleEndpoint = endpoint.MakeOAuth2AuthorizationMiddleware(config.KitLogger)(sampleEndpoint)	adminEndpoint := endpoint.MakeAdminEndpoint(srv)	adminEndpoint = endpoint.MakeOAuth2AuthorizationMiddleware(config.KitLogger)(adminEndpoint)	adminEndpoint = endpoint.MakeAuthorityAuthorizationMiddleware("Admin", config.KitLogger)(adminEndpoint)	//创建健康检查的Endpoint	healthEndpoint := endpoint.MakeHealthCheckEndpoint(srv)	endpts := endpoint.OAuth2Endpoints{		HealthCheckEndpoint: healthEndpoint,		IndexEndpoint: indexEndpoint,		SampleEndpoint:sampleEndpoint,		AdminEndpoint:adminEndpoint,	}	//创建http.Handler	r := transport.MakeHttpHandler(ctx, endpts, tokenService, config.KitLogger)	go func() {		config.Logger.Println("Http Server start at port:" + strconv.Itoa(*servicePort))		handler := r		errChan <- http.ListenAndServe(":"  + strconv.Itoa(*servicePort), handler)	}()	go func() {		c := make(chan os.Signal, 1)		signal.Notify(c, syscall.SIGINT, syscall.SIGTERM)		errChan <- fmt.Errorf("%s", <-c)	}()	error := <-errChan	config.Logger.Println(error)}
 |