62 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
{{define "service"}}
 | 
						|
{{- $Imps := .Imps -}}
 | 
						|
// Package {{.Manifest.Package}} provides types for the {{quote .Manifest.ServiceType}} service.
 | 
						|
{{- with .Manifest.DocumentURL}}
 | 
						|
//
 | 
						|
// Documented at {{.}}.
 | 
						|
{{- end}}
 | 
						|
package {{.Manifest.Package}}
 | 
						|
 | 
						|
import (
 | 
						|
{{- range .Imps.ImportLines}}
 | 
						|
  {{.Alias}} {{quote .Path}}
 | 
						|
{{- end}}
 | 
						|
)
 | 
						|
 | 
						|
const ServiceType = {{quote .Manifest.ServiceType}}
 | 
						|
{{range .SCPD.SortedActions}}
 | 
						|
{{- template "action" args "Action" . "Imps" $Imps}}
 | 
						|
{{end}}
 | 
						|
{{- end}}
 | 
						|
 | 
						|
{{define "action"}}
 | 
						|
{{- $Imps := .Imps}}
 | 
						|
{{- $soapActionType := index $Imps.TypeByName "SOAPActionInterface"}}
 | 
						|
// {{.Action.Name}} provides request and response for the action.
 | 
						|
//
 | 
						|
// ServiceType implements {{$soapActionType.AbsRef}}, self-describing the SOAP action.
 | 
						|
type {{.Action.Name}} struct{
 | 
						|
  Request {{.Action.Name}}Request
 | 
						|
  Response {{.Action.Name}}Response
 | 
						|
}
 | 
						|
 | 
						|
var _ {{$soapActionType.Ref}} = &{{.Action.Name}}{{"{}"}}
 | 
						|
 | 
						|
// ServiceType implements {{$soapActionType.AbsRef}}.
 | 
						|
func (a *{{.Action.Name}}) ServiceType() string { return ServiceType }
 | 
						|
// ActionName implements {{$soapActionType.AbsRef}}.
 | 
						|
func (a *{{.Action.Name}}) ActionName() string { return {{quote .Action.Name}} }
 | 
						|
// RefRequest implements {{$soapActionType.AbsRef}}.
 | 
						|
func (a *{{.Action.Name}}) RefRequest() any { return &a.Request }
 | 
						|
// RefResponse implements {{$soapActionType.AbsRef}}.
 | 
						|
func (a *{{.Action.Name}}) RefResponse() any { return &a.Response }
 | 
						|
 | 
						|
// {{.Action.Name}}Request contains the "in" args for the {{quote .Action.Name}} action.
 | 
						|
type {{.Action.Name}}Request struct
 | 
						|
{{- template "args" args "Args" .Action.InArgs "Imps" $Imps}}
 | 
						|
 | 
						|
// {{.Action.Name}}Response contains the "out" args for the {{quote .Action.Name}} action.
 | 
						|
type {{.Action.Name}}Response struct
 | 
						|
{{- template "args" args "Args" .Action.OutArgs "Imps" $Imps}}
 | 
						|
{{- end}}
 | 
						|
 | 
						|
{{define "args"}}
 | 
						|
{{- $Imps := .Imps -}}
 | 
						|
{ {{- with .Args}}
 | 
						|
{{- range .}}
 | 
						|
{{- $fieldType := index $Imps.TypeByName .RelatedStateVariable.DataType}}
 | 
						|
  {{.Name}} {{$fieldType.Ref}}
 | 
						|
{{- end}}
 | 
						|
{{end -}} }
 | 
						|
{{- end}}
 |