// Copyright © 2022 sealos. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package httpserver import ( "net/http" restful "github.com/emicklei/go-restful/v3" "github.com/labring/sealos/pkg/utils/logger" ) // GoRestful is a http server using go-restful/v3 func GoRestful(registerFunc func(*restful.WebService), addr string) error { container := restful.NewContainer() container.Router(restful.CurlyRouter{}) webService := new(restful.WebService) registerFunc(webService) container.Add(webService) //cors Cors(container) server := &http.Server{Addr: addr, Handler: container} logger.Info("start listening on addr", addr) return server.ListenAndServe() } func GetAccessToken(request *restful.Request) string { authStr := request.HeaderParameter("Authorization") if len(authStr) > 7 && authStr[0:7] == "Bearer " { return authStr[7:] } return "" }