@@ -28,48 +28,128 @@ type {{ resource_type_name }} struct {
28
28
{% endfor -%}
29
29
30
30
{% for op in resource .operations -%}
31
+ {% set op_name = op .name | to_upper_camel_case %}
31
32
{% set has_query_params = op .query_params | length > 0 -%}
32
33
{% set has_required_query_params =
33
34
op .query_params | selectattr ("required" ) | length > 0 -%}
34
35
{% set has_header_params = op .header_params | length > 0 -%}
36
+ {% if op .request_body_schema_name is defined -%}
37
+ {% set request_body_param = op .request_body_schema_name | to_lower_camel_case -%}
38
+ {% endif -%}
39
+
40
+ {# return type -#}
35
41
{% if op .response_body_schema_name is defined -%}
36
42
{% set return_type -%}
37
43
(*{{ op.response_body_schema_name | to_upper_camel_case }}, error)
38
44
{% - endset -%}
39
45
{% else -%}
40
- {% set response_type %} error{% endset -%}
46
+ {% set return_type %} error{% endset -%}
41
47
{% endif -%}
42
- {{ op.description | to_doc_comment(style="go") }}
43
- func (self *{{ resource_type_name }}) {{ op.name | to_upper_camel_case }}(
44
- {# path parameters -#}
48
+
49
+ {# separated because we might need it twice: arguments except PostOptions #}
50
+ {% set common_args -%}
51
+ ctx context.Context,
52
+
53
+ {#- path parameters #}
45
54
{% for p in op .path_params -%}
46
55
{{ p | to_lower_camel_case }} string,
47
56
{% endfor -%}
48
57
49
58
{# body parameter interface -#}
50
59
{% if op .request_body_schema_name is defined -%}
51
- {% set field_name = op .request_body_schema_name | to_lower_camel_case -%}
52
- {{ field_name }} *{{ op.request_body_schema_name }},
60
+ {{ request_body_param }} *{{ op.request_body_schema_name }},
53
61
{% endif -%}
54
62
55
63
{# query parameters -#}
56
64
{% if has_query_params -%}
57
65
{% set field_ty -%}
58
- {{ resource_type_name }}{{ op.name | to_upper_camel_case }}Options
66
+ {{ resource_type_name }}{{ op_name }}Options
59
67
{% - endset -%}
60
68
{% if not has_required_query_params -%}
61
69
{% set field_ty %} *{{ field_ty }}{% endset -%}
62
70
{% endif -%}
63
71
options {{ field_ty }},
64
72
{% endif -%}
73
+ {% endset -%}
74
+
75
+ {# separated because it goes in a different place depending on the operation: inner API call #}
76
+ {% set main_impl -%}
77
+ req := self.api.{{ resource_type_name }}API.{{ op.id | to_upper_camel_case }}(
78
+ ctx,
79
+ {% for p in op .path_params -%}
80
+ {{ p | to_lower_camel_case }},
81
+ {% endfor -%}
82
+ )
83
+ {#- body -#}
84
+ {% if op .request_body_schema_name is defined -%}
85
+ .{{ op.request_body_schema_name }}(*{{ request_body_param }})
86
+ {% endif %}
87
+
88
+ {# query params -#}
89
+ {% if has_query_params -%}
90
+ if options != nil {
91
+ {% for p in op .query_params -%}
92
+ {% set name = p .name | to_upper_camel_case -%}
93
+ if options.{{ name }} != nil {
94
+ req = req.{{ name }}(*options.{{ name }})
95
+ }
96
+ {% endfor -%}
97
+ }
98
+
99
+ {% endif -%}
65
100
66
- {# PostOptions -#}
101
+ {# idempotency -#}
67
102
{% if has_header_params -%}
68
- {# for now, only idempotency-key is supported in header params -#}
69
- options *PostOptions,
103
+ if options != nil {
104
+ if options.IdempotencyKey != nil {
105
+ req = req.IdempotencyKey(*options.IdempotencyKey)
106
+ }
107
+ }
108
+
109
+ {% endif -%}
110
+
111
+ {% if op .response_body_schema_name is defined -%}
112
+ ret, res, err := req.Execute()
113
+ if err != nil {
114
+ return nil, wrapError(err, res)
115
+ }
116
+
117
+ return ret, nil
118
+ {% else -%}
119
+ res, err := req.Execute()
120
+ return wrapError(err, res)
70
121
{% endif -%}
122
+ {% endset -%}
123
+
124
+ {# regular method #}
125
+ {{ op.description | to_doc_comment(style="go") }}
126
+ func (self *{{ resource_type_name }}) {{ op_name }}(
127
+ {{ common_args -}}
71
128
) {{ return_type }} {
72
- // TODO
73
- }{% if not loop .last %} {{ "\n" }}{% endif %}
74
- {% endfor -%}
129
+ {% if has_header_params -%}
130
+ return self.{{ op_name }}WithOptions(
131
+ ctx,
132
+ {% for p in op .path_params -%}
133
+ {{ p | to_lower_camel_case }},
134
+ {% endfor -%}
135
+ {% if op .request_body_schema_name is defined -%}
136
+ {{ op.request_body_schema_name | to_lower_camel_case }},
137
+ {% endif -%}
138
+ nil,
139
+ );
140
+ {% else -%}
141
+ {{ main_impl -}}
142
+ {% endif -%}
143
+ }
75
144
145
+ {# if op has PostOptions: separate OpWithOptions method #}
146
+ {% if has_header_params -%}
147
+ {{ op.description | to_doc_comment(style="go") }}
148
+ func (self *{{ resource_type_name }}) {{ op_name }}WithOptions(
149
+ {{ common_args -}}
150
+ options *PostOptions,
151
+ ) {{ return_type }} {
152
+ {{ main_impl -}}
153
+ }
154
+ {% endif %}
155
+ {% endfor -%}
0 commit comments