Some checks failed
Check scripts syntax / check-scripts-syntax (push) Successful in 3s
Test automated-nfs-backup / test-automated-nfs-backup (push) Successful in 4s
Haven Notify Build and Deploy / Build Haven Notify Image (pull_request) Has been cancelled
Haven Notify Build and Deploy / Build Haven Notify Image (PR) (pull_request) Has been cancelled
Haven Notify Build and Deploy / Deploy Haven Notify (internal) (pull_request) Has been cancelled
Haven Notify Build and Deploy / Test Haven Notify (pull_request) Has been cancelled
38 lines
936 B
Go
38 lines
936 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
)
|
|
|
|
const listenAddress = ":8080"
|
|
|
|
func main() {
|
|
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
|
|
defer stop()
|
|
|
|
logger := log.Default()
|
|
if err := run(ctx, os.Getenv("WEBHOOK_URL"), listenAddress, logger); err != nil && !errors.Is(err, http.ErrServerClosed) {
|
|
logger.Fatalf("Server stopped unexpectedly: %v", err)
|
|
}
|
|
}
|
|
|
|
func run(ctx context.Context, webhookURL, address string, logger *log.Logger) error {
|
|
app, err := newApplication(applicationConfig{WebhookURL: webhookURL, Logger: logger})
|
|
if err != nil {
|
|
return fmt.Errorf("configuration failed: %w", err)
|
|
}
|
|
listener, err := netListen("tcp", address)
|
|
if err != nil {
|
|
return fmt.Errorf("listen on %s: %w", address, err)
|
|
}
|
|
logger.Printf("Starting server on %s", address)
|
|
return serve(ctx, newHTTPServer(app.handler()), listener)
|
|
}
|