Skip to content

Commit 5a83122

Browse files
Merge pull request #487 from appwrite/feat-refactor-ruby-templates
2 parents 2458a08 + 3c95f21 commit 5a83122

File tree

4 files changed

+59
-53
lines changed

4 files changed

+59
-53
lines changed

templates/ruby/base/params.twig

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
params = {
2+
{% for parameter in method.parameters.query | merge(method.parameters.body) %}
3+
{{ parameter.name }}: {% if parameter.isGlobal %}@{% endif %}{{ parameter.name | caseSnake | escapeKeyword }},
4+
{% endfor %}
5+
}
6+
7+
headers = {
8+
{% for parameter in method.parameters.header %}
9+
"{{ parameter.name }}": {{ parameter.name | caseCamel | escapeKeyword }},
10+
{% endfor %}
11+
{% for key, header in method.headers %}
12+
"{{ key }}": '{{ header }}',
13+
{% endfor %}
14+
}
15+
{% if method.parameters.all | length %}
16+
{% for parameter in method.parameters.all %}
17+
{% if parameter.required %}
18+
if {% if parameter.isGlobal %}@{% endif %}{{ parameter.name | caseSnake | escapeKeyword }}.nil?
19+
raise {{spec.title | caseUcfirst}}::Exception.new('Missing required parameter: "{{ parameter.name | caseCamel | escapeKeyword }}"')
20+
end
21+
22+
{% endif %}
23+
{% endfor %}
24+
{% for parameter in method.parameters.path %}
25+
.gsub('{{ '{' }}{{ parameter.name }}{{ '}' }}', {% if parameter.isGlobal %}@{% endif %}{{ parameter.name | caseSnake | escapeKeyword }})
26+
{% endfor %}
27+
{% endif %}

templates/ruby/base/requests/api.twig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@client.call(
2+
method: '{{ method.method | caseUpper }}',
3+
path: path,
4+
headers: headers,
5+
params: params,
6+
{% if method.responseModel and method.responseModel != 'any' %}
7+
response_type: Models::{{method.responseModel | caseUcfirst}}
8+
{% endif %}
9+
)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
id_param_name = {% if method.parameters.all | filter(p => p.isUploadID) | length > 0 %}{% for parameter in method.parameters.all | filter(parameter => parameter.isUploadID) %}"{{ parameter.name }}"{% endfor %}{% else %}nil{% endif %}
2+
3+
{% for parameter in method.parameters.all %}
4+
{% if parameter.type == 'file' %}
5+
param_name = '{{ parameter.name }}'
6+
7+
{% endif %}
8+
{% endfor %}
9+
@client.chunked_upload(
10+
path: path,
11+
headers: headers,
12+
params: params,
13+
param_name: param_name,
14+
id_param_name: id_param_name,
15+
on_progress: on_progress,
16+
{% if method.responseModel and method.responseModel != 'any' %}
17+
response_type: Models::{{method.responseModel | caseUcfirst}}
18+
{% endif %}
19+
)

templates/ruby/lib/container/services/service.rb.twig

Lines changed: 4 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -25,67 +25,18 @@ module {{spec.title | caseUcfirst}}
2525
#
2626
# @return [{{ method.responseModel | caseUcfirst }}]
2727
def {{ method.name | caseSnake }}({% for parameter in method.parameters.all | filter((param) => not param.isGlobal) %}{{ parameter.name | caseSnake | escapeKeyword }}:{% if not parameter.required %} nil{% endif %}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, on_progress: nil{% endif %})
28-
{% for parameter in method.parameters.all %}
29-
{% if parameter.required %}
30-
if {% if parameter.isGlobal %}@{% endif %}{{ parameter.name | caseSnake | escapeKeyword }}.nil?
31-
raise {{spec.title | caseUcfirst}}::Exception.new('Missing required parameter: "{{ parameter.name | caseCamel | escapeKeyword }}"')
32-
end
3328

34-
{% endif %}
35-
{% endfor %}
3629
path = '{{ method.path }}'
37-
{% for parameter in method.parameters.path %}
38-
.gsub('{{ '{' }}{{ parameter.name }}{{ '}' }}', {% if parameter.isGlobal %}@{% endif %}{{ parameter.name | caseSnake | escapeKeyword }})
39-
{% endfor %}
40-
41-
params = {
42-
{% for parameter in method.parameters.query | merge(method.parameters.body) %}
43-
{{ parameter.name }}: {% if parameter.isGlobal %}@{% endif %}{{ parameter.name | caseSnake | escapeKeyword }},
44-
{% endfor %}
45-
}
46-
47-
headers = {
48-
{% for parameter in method.parameters.header %}
49-
"{{ parameter.name }}": {{ parameter.name | caseCamel | escapeKeyword }},
50-
{% endfor %}
51-
{% for key, header in method.headers %}
52-
"{{ key }}": '{{ header }}',
53-
{% endfor %}
54-
}
5530

31+
{{ include('ruby/base/params.twig')}}
5632
{% if 'multipart/form-data' in method.consumes %}
57-
id_param_name = {% if method.parameters.all | filter(p => p.isUploadID) | length > 0 %}{% for parameter in method.parameters.all | filter(parameter => parameter.isUploadID) %}"{{ parameter.name }}"{% endfor %}{% else %}nil{% endif %}
58-
59-
{% for parameter in method.parameters.all %}
60-
{% if parameter.type == 'file' %}
61-
param_name = '{{ parameter.name }}'
62-
63-
{% endif %}
64-
{% endfor %}
65-
@client.chunked_upload(
66-
path: path,
67-
headers: headers,
68-
params: params,
69-
param_name: param_name,
70-
id_param_name: id_param_name,
71-
on_progress: on_progress,
72-
{% if method.responseModel and method.responseModel != 'any' %}
73-
response_type: Models::{{method.responseModel | caseUcfirst}}
74-
{% endif %}
75-
)
33+
{{ include('ruby/base/requests/file.twig')}}
7634
{% else %}
77-
@client.call(
78-
method: '{{ method.method | caseUpper }}',
79-
path: path,
80-
headers: headers,
81-
params: params,
82-
{% if method.responseModel and method.responseModel != 'any' %}
83-
response_type: Models::{{method.responseModel | caseUcfirst}}
84-
{% endif %}
85-
)
35+
{{ include('ruby/base/requests/api.twig')}}
8636
{% endif %}
8737
end
8838

39+
8940
{% endfor %}
9041
end
9142
end

0 commit comments

Comments
 (0)