Skip to content

Commit 086d438

Browse files
committed
Service-level params for Web
1 parent 7551778 commit 086d438

File tree

3 files changed

+53
-20
lines changed

3 files changed

+53
-20
lines changed

templates/web/src/services/template.ts.twig

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,39 @@ type Payload = {
88
}
99

1010
export class {{ service.name | caseUcfirst }} extends Service {
11+
{% if service.globalParams | length %}
12+
{% for parameter in service.globalParams %}
13+
{{ parameter.name | caseCamel | escapeKeyword }};
14+
/**
15+
* Set {{ parameter.name }}.
16+
*
17+
* @param {{ '{' }}{{ parameter.type | typeName }}{{ '}' }} {{ parameter.name | caseCamel | escapeKeyword }}
18+
*
19+
* @return void
20+
*/
21+
set{{ parameter.name | caseUcfirst | escapeKeyword }}({{ parameter.name | caseCamel | escapeKeyword }})
22+
{
23+
this.{{ parameter.name | caseCamel | escapeKeyword }} = {{ parameter.name | caseCamel | escapeKeyword }};
24+
}
25+
/**
26+
* Get {{ parameter.name }}.
27+
*
28+
* @return {{ parameter.type | typeName }}
29+
*/
30+
get{{ parameter.name | caseUcfirst | escapeKeyword }}({{ parameter.name | caseCamel | escapeKeyword }})
31+
{
32+
return this.{{ parameter.name | caseCamel | escapeKeyword }};
33+
}
34+
{% endfor %}
35+
constructor(client, {% for parameter in service.globalParams %} {{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required %} = null{% endif %}{% if not loop.last %}, {% endif %}{% endfor %})
36+
{
37+
super(client);
38+
39+
{% for parameter in service.globalParams %}
40+
this.{{ parameter.name | caseCamel | escapeKeyword }} = {{ parameter.name | caseCamel | escapeKeyword }};
41+
{% endfor %}
42+
}
43+
{% endif %}
1144
{% for method in service.methods %}
1245

1346
/**
@@ -17,34 +50,34 @@ export class {{ service.name | caseUcfirst }} extends Service {
1750
{{ method.description|comment3 }}
1851
{% endif %}
1952
*
20-
{% for parameter in method.parameters.all %}
53+
{% for parameter in method.parameters.all | filter((param) => not param.isGlobal) %}
2154
* @param {{ '{' }}{{ parameter.type | getPropertyType(method) | raw }}{{ '}' }} {{ parameter.name | caseCamel | escapeKeyword }}
2255
{% endfor %}
2356
* @throws {{ '{' }}{{ spec.title | caseUcfirst}}Exception}
2457
* @returns {% if method.type == 'webAuth' %}{void|string}{% elseif method.type == 'location' %}{URL}{% else %}{Promise}{% endif %}
2558

2659
*/
27-
{% if method.type != 'location' and method.type != 'webAuth'%}async {% endif %}{{ method.name | caseCamel }}{{ method.responseModel | getGenerics(spec) | raw }}({% for parameter in method.parameters.all %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required %}?{% endif %}: {{ parameter.type | getPropertyType(method) | raw }}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, onProgress = (progress: UploadProgress) => {}{% endif %}): {{ method | getReturn(spec) | raw }} {
28-
{% for parameter in method.parameters.all %}
60+
{% if method.type != 'location' and method.type != 'webAuth'%}async {% endif %}{{ method.name | caseCamel }}{{ method.responseModel | getGenerics(spec) | raw }}({% for parameter in method.parameters.all | filter((param) => not param.isGlobal) %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required %}?{% endif %}: {{ parameter.type | getPropertyType(method) | raw }}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, onProgress = (progress: UploadProgress) => {}{% endif %}): {{ method | getReturn(spec) | raw }} {
61+
{% for parameter in method.parameters.all | filter((param) => not param.isGlobal) %}
2962
{% if parameter.required %}
3063
if (typeof {{ parameter.name | caseCamel | escapeKeyword }} === 'undefined') {
3164
throw new {{spec.title | caseUcfirst}}Exception('Missing required parameter: "{{ parameter.name | caseCamel | escapeKeyword }}"');
3265
}
3366

3467
{% endif %}
3568
{% endfor %}
36-
let path = '{{ method.path }}'{% for parameter in method.parameters.path %}.replace('{{ '{' }}{{ parameter.name | caseCamel | escapeKeyword }}{{ '}' }}', {{ parameter.name | caseCamel | escapeKeyword }}){% endfor %};
69+
let path = '{{ method.path }}'{% for parameter in method.parameters.path %}.replace('{{ '{' }}{{ parameter.name | caseCamel | escapeKeyword }}{{ '}' }}', {% if parameter.isGlobal %}this.{% endif %}{{ parameter.name | caseCamel | escapeKeyword }}){% endfor %};
3770
let payload: Payload = {};
3871

3972
{% for parameter in method.parameters.query %}
40-
if (typeof {{ parameter.name | caseCamel | escapeKeyword }} !== 'undefined') {
41-
payload['{{ parameter.name }}'] = {{ parameter.name | caseCamel | escapeKeyword }};
73+
if (typeof {% if parameter.isGlobal %}this.{% endif %}{{ parameter.name | caseCamel | escapeKeyword }} !== 'undefined') {
74+
payload['{{ parameter.name }}'] = {% if parameter.isGlobal %}this.{% endif %}{{ parameter.name | caseCamel | escapeKeyword }};
4275
}
4376

4477
{% endfor %}
4578
{% for parameter in method.parameters.body %}
46-
if (typeof {{ parameter.name | caseCamel | escapeKeyword }} !== 'undefined') {
47-
payload['{{ parameter.name }}'] = {{ parameter.name | caseCamel | escapeKeyword }};
79+
if (typeof {% if parameter.isGlobal %}this.{% endif %}{{ parameter.name | caseCamel | escapeKeyword }} !== 'undefined') {
80+
payload['{{ parameter.name }}'] = {% if parameter.isGlobal %}this.{% endif %}{{ parameter.name | caseCamel | escapeKeyword }};
4881
}
4982

5083
{% endfor %}

tests/languages/web/index.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
// Init SDK
2323
const { Client, Foo, Bar, General } = Appwrite;
2424
const client = new Client();
25-
const foo = new Foo(client);
25+
const foo = new Foo(client, 'string');
2626
const bar = new Bar(client);
2727
const general = new General(client);
2828

@@ -34,19 +34,19 @@
3434
});
3535

3636
// Foo
37-
response = await foo.get("string", 123, ["string in array"]);
37+
response = await foo.get(123, ["string in array"]);
3838
console.log(response.result);
3939

40-
response = await foo.post("string", 123, ["string in array"]);
40+
response = await foo.post(123, ["string in array"]);
4141
console.log(response.result);
4242

43-
response = await foo.put("string", 123, ["string in array"]);
43+
response = await foo.put(123, ["string in array"]);
4444
console.log(response.result);
4545

46-
response = await foo.patch("string", 123, ["string in array"]);
46+
response = await foo.patch(123, ["string in array"]);
4747
console.log(response.result);
4848

49-
response = await foo.delete("string", 123, ["string in array"]);
49+
response = await foo.delete(123, ["string in array"]);
5050
console.log(response.result);
5151

5252
// Bar

tests/languages/web/node.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,23 @@ async function start() {
55

66
console.log('\nTest Started');
77
const client = new Client();
8-
const foo = new Foo(client);
8+
const foo = new Foo(client, 'string');
99
const bar = new Bar(client);
1010
const general = new General(client);
1111
// Foo
12-
response = await foo.get('string', 123, ['string in array']);
12+
response = await foo.get(123, ['string in array']);
1313
console.log(response.result);
1414

15-
response = await foo.post('string', 123, ['string in array']);
15+
response = await foo.post(123, ['string in array']);
1616
console.log(response.result);
1717

18-
response = await foo.put('string', 123, ['string in array']);
18+
response = await foo.put(123, ['string in array']);
1919
console.log(response.result);
2020

21-
response = await foo.patch('string', 123, ['string in array']);
21+
response = await foo.patch(123, ['string in array']);
2222
console.log(response.result);
2323

24-
response = await foo.delete('string', 123, ['string in array']);
24+
response = await foo.delete(123, ['string in array']);
2525
console.log(response.result);
2626

2727
// Bar

0 commit comments

Comments
 (0)