github.com/gocaveman/caveman@v0.0.0-20191211162744-0ddf99dbdf6e/webutil/handlerregistry/handlerregistry.go (about) 1 // Registry for handlers to be automatically made available in the handler list. 2 package handlerregistry 3 4 import ( 5 "net/http" 6 7 "github.com/gocaveman/caveman/webutil" 8 ) 9 10 const ( 11 SeqFirst = float64(0) // processed first 12 SeqSetup = float64(10) // before any middleware is run 13 SeqMiddleware = float64(20) // middleware can modify before controllers are processed 14 SeqCtrl = float64(50) // controllers do the main HTTP handling 15 SeqRender = float64(80) // page rendering happens after other stuff is processed 16 SeqLast = float64(100) // processed last 17 ) 18 19 var OnlyReadableFromMain = true 20 21 var reg webutil.NamedSequence 22 23 // Contents returns the current contents of the registry as a NamedSequence. 24 func Contents() webutil.NamedSequence { 25 if OnlyReadableFromMain { 26 webutil.MainOnly(1) 27 } 28 return reg.SortedCopy() 29 } 30 31 func MustRegister(seq float64, name string, h interface{}) { 32 reg = append(reg, webutil.NamedSequenceItem{Sequence: seq, Name: name, Value: h}) 33 } 34 35 func MustRegisterHandler(seq float64, name string, h http.Handler) { 36 MustRegister(seq, name, h) 37 } 38 39 func MustRegisterChainHandler(seq float64, name string, ch webutil.ChainHandler) { 40 MustRegister(seq, name, ch) 41 }