Skip to content

Commit dad9037

Browse files
committed
refactor kotlin templates
1 parent 2dfc5f7 commit dad9037

File tree

7 files changed

+58
-51
lines changed

7 files changed

+58
-51
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{% macro methodNeedsSecurityParameters(method) %}
2+
{% if (method.type == "webAuth" or method.type == "location") and method.security|length > 0 %}{{ true }}{% else %}{{false}}{% endif %}
3+
{% endmacro %}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{% macro parameter(parameter) %}{{ parameter.name | caseCamel }}: {{ parameter.type | typeName }}{% if not parameter.required %}? = null{% endif %}{% endmacro %}
2+
{% macro method_parameters(parameters, consumes) %}
3+
{% if parameters.all|length > 0 %}{% for parameter in parameters.all | filter((param) => not param.isGlobal) %}{{ '\n\t\t' }}{{ _self.parameter(parameter) }}{% if not loop.last %}{{ ',' }}{% endif %}{% endfor %}{% if 'multipart/form-data' in consumes %}, onProgress: ((UploadProgress) -> Unit)? = null{% endif %}{% endif %}
4+
{% endmacro %}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{% macro resultType(namespace, method) %}
2+
{% if method.type == "webAuth" %}Bool{% elseif method.type == "location" %}ByteArray{% elseif not method.responseModel or method.responseModel == 'any' %}Any{% else %}{{ namespace | caseDot}}.models.{{method.responseModel | caseUcfirst}}{% endif %}
3+
{% endmacro %}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{% import 'kotlin/base/macros/resultType.twig' as result%}
2+
return client.call(
3+
"{{ method.method | caseUpper }}",
4+
path,
5+
headers,
6+
params,
7+
responseType = {{ result.resultType(sdk.namespace, method) }}::class.java,
8+
{% if method.responseModel %}
9+
converter,
10+
{% endif %}
11+
)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
val idParamName: String? = {% if method.parameters.all | filter(p => p.isUploadID) | length > 0 %}{% for parameter in method.parameters.all | filter(parameter => parameter.isUploadID) %}"{{ parameter.name }}"{% endfor %}{% else %}null{% endif %}
2+
3+
{% for parameter in method.parameters.all %}
4+
{% if parameter.type == 'file' %}
5+
val paramName = "{{ parameter.name }}"
6+
{% endif %}
7+
{% endfor %}
8+
return client.chunkedUpload(
9+
path,
10+
headers,
11+
params,
12+
responseType = {{ result.resultType(sdk.namespace, method) }}::class.java,
13+
{% if method.responseModel %}
14+
converter,
15+
{% endif %}
16+
paramName,
17+
idParamName,
18+
onProgress,
19+
)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
return client.call(
2+
"{{ method.method | caseUpper }}",
3+
path,
4+
params = params,
5+
responseType = {{ result.resultType(sdk.namespace, method) }}::class.java
6+
)

templates/kotlin/src/main/kotlin/io/appwrite/services/ServiceTemplate.kt.twig

Lines changed: 12 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
1-
{% macro parameter(parameter) %}{{ parameter.name | caseCamel }}: {{ parameter.type | typeName }}{% if not parameter.required %}? = null{% endif %}{% endmacro %}
2-
{% macro method_parameters(parameters, consumes) %}
3-
{% if parameters.all|length > 0 %}{% for parameter in parameters.all | filter((param) => not param.isGlobal) %}{{ '\n\t\t' }}{{ _self.parameter(parameter) }}{% if not loop.last %}{{ ',' }}{% endif %}{% endfor %}{% if 'multipart/form-data' in consumes %}, onProgress: ((UploadProgress) -> Unit)? = null{% endif %}{% endif %}
4-
{% endmacro %}
5-
{% macro methodNeedsSecurityParameters(method) %}
6-
{% if (method.type == "webAuth" or method.type == "location") and method.security|length > 0 %}{{ true }}{% else %}{{false}}{% endif %}
7-
{% endmacro %}
8-
{% macro resultType(namespace, method) %}
9-
{% if method.type == "webAuth" %}Bool{% elseif method.type == "location" %}ByteArray{% elseif not method.responseModel or method.responseModel == 'any' %}Any{% else %}{{ namespace | caseDot}}.models.{{method.responseModel | caseUcfirst}}{% endif %}
10-
{% endmacro %}
1+
{% import 'kotlin/base/macros/parameter.twig' as parameters %}
2+
{% import 'kotlin/base/macros/methodNeedsSecurityParameters.twig' as securityParameters %}
3+
{% import 'kotlin/base/macros/resultType.twig' as result %}
114
package {{ sdk.namespace | caseDot }}.services
125
import {{ sdk.namespace | caseDot }}.Client
136
import {{ sdk.namespace | caseDot }}.models.*
@@ -52,20 +45,20 @@ class {{ service.name | caseUcfirst }} : Service {
5245
{% for parameter in method.parameters.all | filter((param) => not param.isGlobal) %}
5346
* @param {{ parameter.name | caseCamel }} {{ parameter.description }}
5447
{% endfor %}
55-
* {% if method.type != "webAuth" %}@return [{{ _self.resultType(sdk.namespace, method) }}]{% endif %}
48+
* {% if method.type != "webAuth" %}@return [{{ result.resultType(sdk.namespace, method) }}]{% endif %}
5649

5750
*/
5851
@JvmOverloads
5952
@Throws({{ spec.title | caseUcfirst }}Exception::class)
60-
suspend fun {{ method.name | caseCamel }}({% if method.type == "webAuth" %}{{ '\n\t\t' }}activity: ComponentActivity{% if method.parameters.all | length > 0 %}, {% endif %}{% endif %}{{ _self.method_parameters(method.parameters, method.consumes) }}{% if method.parameters.all|length > 0 %}{{ '\n\t' }}{% endif %}){% if method.type != "webAuth" %}: {{ _self.resultType(sdk.namespace, method) }}{% endif %} {
53+
suspend fun {{ method.name | caseCamel }}({% if method.type == "webAuth" %}{{ '\n\t\t' }}activity: ComponentActivity{% if method.parameters.all | length > 0 %}, {% endif %}{% endif %}{{ parameters.method_parameters(method.parameters, method.consumes) }}{% if method.parameters.all|length > 0 %}{{ '\n\t' }}{% endif %}){% if method.type != "webAuth" %}: {{ result.resultType(sdk.namespace, method) }}{% endif %} {
6154
val path = "{{ method.path }}"{% for parameter in method.parameters.path %}.replace("{{ '{' ~ parameter.name | caseCamel ~ '}' }}", {{ parameter.name | caseCamel }}){% endfor %}
6255

6356
val params = mutableMapOf<String, Any?>(
6457
{% for parameter in method.parameters.query | merge(method.parameters.body) %}
65-
"{{ parameter.name }}" to {{ parameter.name | caseCamel }}{% if not loop.last or _self.methodNeedsSecurityParameters(method) %},{% endif %}
58+
"{{ parameter.name }}" to {{ parameter.name | caseCamel }}{% if not loop.last or securityParameters.methodNeedsSecurityParameters(method) %},{% endif %}
6659

6760
{% endfor %}
68-
{% if _self.methodNeedsSecurityParameters(method) %}
61+
{% if securityParameters.methodNeedsSecurityParameters(method) %}
6962
{% for node in method.security %}
7063
{% for key,header in node|keys %}
7164
"{{header|caseLower}}" to client.config["{{header|caseLower}}"]{% if not loop.last %},{% endif %}
@@ -116,56 +109,24 @@ class {{ service.name | caseUcfirst }} : Service {
116109
)
117110
}
118111
{% elseif method.type == 'location' %}
119-
return client.call(
120-
"{{ method.method | caseUpper }}",
121-
path,
122-
params = params,
123-
responseType = {{ _self.resultType(sdk.namespace, method) }}::class.java
124-
)
112+
{{ include('kotlin/base/requests/location.twig') }}
125113
{% else %}
126114
val headers = mutableMapOf(
127115
{{ method.headers|map((header, key) => " \"#{key}\" to \"#{header}\"")|join(',\n')|raw }}
128116
)
129117
{% if method.responseModel %}
130-
val converter: (Map<String, Any>) -> {{ _self.resultType(sdk.namespace, method) }} = {
118+
val converter: (Map<String, Any>) -> {{ result.resultType(sdk.namespace, method) }} = {
131119
{% if method.responseModel == 'any' %}
132120
it
133121
{% else %}
134-
{{ _self.resultType(sdk.namespace, method) }}.from(map = it)
122+
{{ result.resultType(sdk.namespace, method) }}.from(map = it)
135123
{% endif %}
136124
}
137125
{% endif %}
138126
{% if 'multipart/form-data' in method.consumes %}
139-
val idParamName: String? = {% if method.parameters.all | filter(p => p.isUploadID) | length > 0 %}{% for parameter in method.parameters.all | filter(parameter => parameter.isUploadID) %}"{{ parameter.name }}"{% endfor %}{% else %}null{% endif %}
140-
141-
{% for parameter in method.parameters.all %}
142-
{% if parameter.type == 'file' %}
143-
val paramName = "{{ parameter.name }}"
144-
{% endif %}
145-
{% endfor %}
146-
return client.chunkedUpload(
147-
path,
148-
headers,
149-
params,
150-
responseType = {{ _self.resultType(sdk.namespace, method) }}::class.java,
151-
{% if method.responseModel %}
152-
converter,
153-
{% endif %}
154-
paramName,
155-
idParamName,
156-
onProgress,
157-
)
127+
{{include('kotlin/base/requests/file.twig')}}
158128
{% else %}
159-
return client.call(
160-
"{{ method.method | caseUpper }}",
161-
path,
162-
headers,
163-
params,
164-
responseType = {{ _self.resultType(sdk.namespace, method) }}::class.java,
165-
{% if method.responseModel %}
166-
converter,
167-
{% endif %}
168-
)
129+
{{include('kotlin/base/requests/api.twig')}}
169130
{% endif %}
170131
{% endif %}
171132
}

0 commit comments

Comments
 (0)