forked from hooklift/gowsdl
-
Notifications
You must be signed in to change notification settings - Fork 1
/
operations_tmpl.go
65 lines (55 loc) · 2.64 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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// 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 gowsdl
var opsTmpl = `
{{range .}}
{{$privateType := .Name | makePrivate}}
{{$exportType := .Name | makePublic}}
type I{{$exportType}} interface {
{{range .Operations}}
{{$faults := len .Faults}}
{{$soapAction := findSOAPAction .Name $privateType}}
{{$requestType := findType .Input.Message | replaceReservedWords | makePublic}}
{{$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}}
{{makePublic .Name | replaceReservedWords}} ({{if ne $requestType ""}}request *{{$requestType}}{{end}}) ({{if ne $responseType ""}}*{{$responseType}}, {{end}}error)
{{/*end*/}}
{{makePublic .Name | replaceReservedWords}}Context (ctx context.Context, {{if ne $requestType ""}}request *{{$requestType}}{{end}}) ({{if ne $responseType ""}}*{{$responseType}}, {{end}}error)
{{/*end*/}}
{{end}}
}
type {{$privateType}} struct {
client *soap.Client
}
func New{{$exportType}}Opr(client *soap.Client) I{{$exportType}} {
return &{{$privateType}}{
client: client,
}
}
{{range .Operations}}
{{$requestType := findType .Input.Message | replaceReservedWords | makePublic}}
{{$soapAction := findSOAPAction .Name $privateType}}
{{$responseType := findType .Output.Message | replaceReservedWords | makePublic}}
func (service *{{$privateType}}) {{makePublic .Name | replaceReservedWords}}Context (ctx context.Context, {{if ne $requestType ""}}request *{{$requestType}}{{end}}) ({{if ne $responseType ""}}*{{$responseType}}, {{end}}error) {
{{if ne $responseType ""}}response := new({{$responseType}}){{end}}
err := service.client.Do(ctx, "{{if ne $soapAction ""}}{{$soapAction}}{{else}}''{{end}}", {{if ne $requestType ""}}request{{else}}nil{{end}}, {{if ne $responseType ""}}response{{else}}struct{}{}{{end}})
if err != nil {
return {{if ne $responseType ""}}nil, {{end}}err
}
return {{if ne $responseType ""}}response, {{end}}nil
}
func (service *{{$privateType}}) {{makePublic .Name | replaceReservedWords}} ({{if ne $requestType ""}}request *{{$requestType}}{{end}}) ({{if ne $responseType ""}}*{{$responseType}}, {{end}}error) {
return service.{{makePublic .Name | replaceReservedWords}}Context(
context.Background(),
{{if ne $requestType ""}}request,{{end}}
)
}
{{end}}
{{end}}
`