forked from hooklift/gowsdl
-
Notifications
You must be signed in to change notification settings - Fork 1
/
operations_tmpl.go
48 lines (42 loc) · 1.53 KB
/
operations_tmpl.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
package generator
var opsTmpl = `
{{range .}}
{{$portType := .Name | makePublic}}
type {{$portType}} struct {
client *gowsdl.SoapClient
}
func New{{$portType}}(url string, tls bool) *{{$portType}} {
if url == "" {
url = {{findServiceAddress .Name | printf "%q"}}
}
client := gowsdl.NewSoapClient(url, tls)
return &{{$portType}}{
client: client,
}
}
{{range .Operations}}
{{$faults := len .Faults}}
{{$requestType := findType .Input.Message | replaceReservedWords | makePublic}}
{{$soapAction := findSoapAction .Name $portType}}
{{$responseType := findType .Output.Message | replaceReservedWords | makePublic}}
{{/*if ne $soapAction ""*/}}
{{if gt $faults 0}}
// Error can be either of the following types:
// {{range .Faults}}
// - {{.Name}} {{.Doc}}{{end}}{{end}}
{{if ne .Doc ""}}/* {{.Doc}} */{{end}}
func (service *{{$portType}}) {{makePublic .Name | replaceReservedWords}} ({{if ne $requestType ""}}request *{{$requestType}}{{end}}, header *gowsdl.SoapHeader, configureRequest func(*http.Request)) (*{{$responseType}}, error) {
response := &{{$responseType}}{}
err := service.client.Call("{{$soapAction}}", {{if ne $requestType ""}}request{{else}}nil{{end}}, response, header, configureRequest)
if err != nil {
return nil, err
}
return response, nil
}
{{/*end*/}}
{{end}}
{{end}}
`