github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/imagebuilder/rpcd/api.go (about)

     1  package rpcd
     2  
     3  import (
     4  	"io"
     5  
     6  	"github.com/Cloud-Foundations/Dominator/imagebuilder/builder"
     7  	"github.com/Cloud-Foundations/Dominator/lib/log"
     8  	"github.com/Cloud-Foundations/Dominator/lib/srpc"
     9  	"github.com/Cloud-Foundations/Dominator/lib/srpc/serverutil"
    10  )
    11  
    12  type srpcType struct {
    13  	builder *builder.Builder
    14  	logger  log.Logger
    15  	*serverutil.PerUserMethodLimiter
    16  }
    17  
    18  type htmlWriter srpcType
    19  
    20  func (hw *htmlWriter) WriteHtml(writer io.Writer) {
    21  	hw.writeHtml(writer)
    22  }
    23  
    24  func Setup(builder *builder.Builder, logger log.Logger) (*htmlWriter, error) {
    25  	srpcObj := &srpcType{
    26  		builder: builder,
    27  		logger:  logger,
    28  		PerUserMethodLimiter: serverutil.NewPerUserMethodLimiter(
    29  			map[string]uint{
    30  				"BuildImage": 1,
    31  			}),
    32  	}
    33  	srpc.RegisterNameWithOptions("Imaginator", srpcObj,
    34  		srpc.ReceiverOptions{
    35  			PublicMethods: []string{
    36  				"BuildImage",
    37  			}})
    38  	return (*htmlWriter)(srpcObj), nil
    39  }