github.com/frostornge/solgen@v0.1.3/proto/service.go (about)

     1  package proto
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  )
     7  
     8  type method struct {
     9  	Name   string
    10  	Input  string
    11  	Output string
    12  }
    13  
    14  func (mtd method) printMethod(prefix string) string {
    15  	return prefix + fmt.Sprintf("rpc %s(%s) returns (%s);", mtd.Name, mtd.Input, mtd.Output) + "\n"
    16  }
    17  
    18  type Service struct {
    19  	Comment string
    20  	Name    string
    21  	Methods []method
    22  }
    23  
    24  func (srv Service) PrintService() string {
    25  	return srv.printService("")
    26  }
    27  
    28  func (srv Service) printService(prefix string) string {
    29  	var builder strings.Builder
    30  
    31  	builder.WriteString(prefix + fmt.Sprintf("// %s", srv.Comment) + "\n")
    32  	builder.WriteString(prefix + fmt.Sprintf("service %s {", srv.Name) + "\n")
    33  
    34  	for _, mtd := range srv.Methods {
    35  		builder.WriteString(mtd.printMethod(prefix + "\t"))
    36  	}
    37  
    38  	builder.WriteString(prefix + "}" + "\n")
    39  
    40  	return builder.String()
    41  }