func ListenAndServeTLS(addr string, certFile, keyFile string, handler http.Handler) error {
	if handler == nil {
		handler = http.DefaultServeMux
	}
	if IsLambda() {
		adapter := LambdaAdapter{handler}
		lambda.Start(adapter.Handle)
		return nil
	}
	return http.ListenAndServeTLS(addr, certFile, keyFile, handler)
}
ListenAndServeTLS acts identically to ListenAndServe, except that it
expects HTTPS connections. Additionally, files containing a certificate and
matching private key for the server must be provided. If the certificate
is signed by a certificate authority, the certFile should be the concatenation
of the server's certificate, any intermediates, and the CA's certificate.
package gluo
import (
	"context"
	"net/http"
	"os"
	"github.com/aws/aws-lambda-go/events"
	"github.com/aws/aws-lambda-go/lambda"
)
func IsLambda() bool {
	_, ok := os.LookupEnv("_LAMBDA_SERVER_PORT")
	return ok
}
type LambdaAdapter struct {
	http.Handler
}
func (la LambdaAdapter) Handle(ctx context.Context, event events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
	req, err := request(ctx, event)
	if err != nil {
		return events.APIGatewayProxyResponse{}, err
	}
	w := &response{}
	la.Handler.ServeHTTP(w, req)
	return w.finish()
}
func ListenAndServe(addr string, handler http.Handler) error {
	if handler == nil {
		handler = http.DefaultServeMux
	}
	if IsLambda() {
		adapter := LambdaAdapter{handler}
		lambda.Start(adapter.Handle)
		return nil
	}
	return http.ListenAndServe(addr, handler)
}