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  }