forked from hooklift/gowsdl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoperations_tmpl.go
89 lines (76 loc) · 4.18 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// 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 {{$exportType}} interface {
{{range .Operations}}
{{$faults := len .Faults}}
{{$soapAction := findSOAPAction .Name $privateType}}
{{$requestType := findType .Input.Message | replaceReservedWords | makePublic}}
{{$responseType := findType .Output.Message | replaceReservedWords | makePublic}}
{{$responseAttachments := responseAttachments .Output.Message }}
{{$attachments := len $responseAttachments}}
{{/*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}}{{if gt $attachments 0}}[]soap.MIMEMultipartAttachment, {{end}}error)
{{/*end*/}}
{{makePublic .Name | replaceReservedWords}}Context (ctx context.Context, {{if ne $requestType ""}}request *{{$requestType}}{{end}}) ({{if ne $responseType ""}}*{{$responseType}}, {{end}}{{if gt $attachments 0}}[]soap.MIMEMultipartAttachment, {{end}}error)
{{/*end*/}}
{{end}}
}
type {{$privateType}} struct {
client *soap.Client
}
func New{{$exportType}}(client *soap.Client) {{$exportType}} {
return &{{$privateType}}{
client: client,
}
}
{{range .Operations}}
{{$requestType := findType .Input.Message | replaceReservedWords | makePublic}}
{{$soapAction := findSOAPAction .Name $privateType}}
{{$responseType := findType .Output.Message | replaceReservedWords | makePublic}}
{{$responseAttachments := responseAttachments .Output.Message }}
{{$attachments := len $responseAttachments}}
{{if gt $attachments 0}}
func (service *{{$privateType}}) {{makePublic .Name | replaceReservedWords}}Context (ctx context.Context, {{if ne $requestType ""}}request *{{$requestType}}{{end}}) ({{if ne $responseType ""}}*{{$responseType}}, {{end}}[]soap.MIMEMultipartAttachment, error) {
{{if ne $responseType ""}}response := new({{$responseType}}){{end}}
attachments, err := service.client.CallContextWithAttachmentsAndFaultDetail(ctx, "{{if ne $soapAction ""}}{{$soapAction}}{{else}}''{{end}}", {{if ne $requestType ""}}request{{else}}nil{{end}}, {{if ne $responseType ""}}response{{else}}struct{}{}{{end}}, nil)
if err != nil {
return {{if ne $responseType ""}}nil, {{end}}nil, err
}
return {{if ne $responseType ""}}response, {{end}}attachments, nil
}
func (service *{{$privateType}}) {{makePublic .Name | replaceReservedWords}} ({{if ne $requestType ""}}request *{{$requestType}}{{end}}) ({{if ne $responseType ""}}*{{$responseType}}, {{end}}[]soap.MIMEMultipartAttachment, error) {
return service.{{makePublic .Name | replaceReservedWords}}Context(
context.Background(),
{{if ne $requestType ""}}request,{{end}}
)
}
{{else}}
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.CallContext(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}}
{{end}}
`