in main.go [74:112]
func newApp(ctx context.Context, port, projectID string) (*App, error) {
app := &App{
Server: &http.Server{
Addr: ":" + port,
// Add some defaults, should be changed to suit your use case.
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
MaxHeaderBytes: 1 << 20,
},
}
if projectID == "" {
projID, err := metadata.ProjectID()
if err != nil {
return nil, fmt.Errorf("unable to detect Project ID from GOOGLE_CLOUD_PROJECT or metadata server: %w", err)
}
projectID = projID
}
app.projectID = projectID
client, err := logging.NewClient(ctx, fmt.Sprintf("projects/%s", app.projectID),
// We don't need to make any requests when logging to stderr.
option.WithoutAuthentication(),
option.WithGRPCDialOption(
grpc.WithTransportCredentials(insecure.NewCredentials()),
))
if err != nil {
return nil, fmt.Errorf("unable to initialize logging client: %v", err)
}
app.log = client.Logger("test-log", logging.RedirectAsJSON(os.Stderr))
// Setup request router.
r := mux.NewRouter()
r.HandleFunc("/", app.Handler).
Methods("GET")
app.Server.Handler = r
return app, nil
}