package main import ( gemini "git.sr.ht/~yotam/go-gemini" ) // RecovererHandler wrap a Gemini handler and recover from panics type RecovererHandler struct { handler gemini.Handler } // Handle implement the gemini.Handler interface by recovering inner handler func (h RecovererHandler) Handle(req gemini.Request) (res gemini.Response) { defer func() { if r := recover(); r != nil { res = gemini.Response{Status: gemini.StatusTemporaryFailure, Meta: "Internal server error", Body: nil} } }() return h.handler.Handle(req) }