Skip to content

Commit ebadfe7

Browse files
committed
feat(generators): allow per-spec timeouts
1 parent 3b61cf7 commit ebadfe7

File tree

8 files changed

+74
-13
lines changed

8 files changed

+74
-13
lines changed

generators/src/main/java/com/algolia/codegen/AlgoliaJavascriptGenerator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ private void setDefaultGeneratorOptions() {
203203
public void processOpenAPI(OpenAPI openAPI) {
204204
super.processOpenAPI(openAPI);
205205
Helpers.generateServers(super.fromServers(openAPI.getServers()), additionalProperties);
206+
Timeouts.enrichBundle((HashMap<String, Object>) openAPI.getExtensions().get("x-timeouts"), additionalProperties);
206207
}
207208

208209
@Override
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.algolia.codegen.utils;
2+
3+
import com.algolia.codegen.exceptions.*;
4+
import com.fasterxml.jackson.databind.*;
5+
import java.util.*;
6+
7+
public class Timeouts {
8+
9+
/** Inject timeouts info into the client bundle at x-timeouts */
10+
public static void enrichBundle(HashMap<String, Object> timeouts, Map<String, Object> bundle) throws ConfigException {
11+
HashMap<String, Object> xtimeouts = new HashMap<>();
12+
13+
HashMap<String, Object> browser = new HashMap<>();
14+
HashMap<String, Object> server = new HashMap<>();
15+
16+
if (timeouts != null) {
17+
browser = (HashMap<String, Object>) timeouts.getOrDefault("browser", new HashMap<>());
18+
server = (HashMap<String, Object>) timeouts.getOrDefault("server", new HashMap<>());
19+
}
20+
21+
HashMap<String, Object> defaultBrowser = new HashMap<>();
22+
defaultBrowser.put("connect", 1000);
23+
defaultBrowser.put("read", 2000);
24+
defaultBrowser.put("write", 30000);
25+
26+
HashMap<String, Object> defaultServer = new HashMap<>();
27+
defaultServer.put("connect", 2000);
28+
defaultServer.put("read", 5000);
29+
defaultServer.put("write", 30000);
30+
31+
if (browser == null) {
32+
xtimeouts.put("browser", defaultBrowser);
33+
} else {
34+
browser.put("connect", browser.getOrDefault("connect", defaultBrowser.get("connect")));
35+
browser.put("read", browser.getOrDefault("read", defaultBrowser.get("read")));
36+
browser.put("write", browser.getOrDefault("write", defaultBrowser.get("write")));
37+
xtimeouts.put("browser", browser);
38+
}
39+
40+
if (server == null) {
41+
xtimeouts.put("server", defaultServer);
42+
} else {
43+
server.put("connect", server.getOrDefault("connect", defaultServer.get("connect")));
44+
server.put("read", server.getOrDefault("read", defaultServer.get("read")));
45+
server.put("write", server.getOrDefault("write", defaultServer.get("write")));
46+
xtimeouts.put("server", server);
47+
}
48+
49+
bundle.put("x-timeouts", xtimeouts);
50+
}
51+
}

playground/javascript/node/analytics.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ async function testAnalytics() {
1414
const res = await client.getTopFilterForAttribute({
1515
attribute: 'myAttribute1,myAttribute2',
1616
index: analyticsIndex,
17-
});
17+
}, {timeouts: {read:20000, write: 30000}});
1818

1919
console.log(`[OK]`, res);
2020
} catch (e) {

specs/ingestion/spec.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,15 @@ x-tagGroups:
9595
- sources
9696
- tasks
9797
- transformations
98+
x-timeouts:
99+
browser:
100+
connect: 25000
101+
read: 25000
102+
write: 25000
103+
server:
104+
connect: 25000
105+
read: 25000
106+
write: 25000
98107
paths:
99108
# ######################
100109
# ### Custom request ###

templates/javascript/clients/client/builds/browser.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
appId,
66
apiKey,{{#hasRegionalHost}}region,{{/hasRegionalHost}}
77
timeouts: {
8-
connect: DEFAULT_CONNECT_TIMEOUT_BROWSER,
9-
read: DEFAULT_READ_TIMEOUT_BROWSER,
10-
write: DEFAULT_WRITE_TIMEOUT_BROWSER,
8+
connect: {{#x-timeouts.browser.connect}}{{{.}}}{{/x-timeouts.browser.connect}},
9+
read: {{#x-timeouts.browser.read}}{{{.}}}{{/x-timeouts.browser.read}},
10+
write: {{#x-timeouts.browser.write}}{{{.}}}{{/x-timeouts.browser.write}},
1111
},
1212
logger: createNullLogger(),
1313
requester: createXhrRequester(),

templates/javascript/clients/client/builds/fetch.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ export type {{#lambda.titlecase}}{{clientName}}{{/lambda.titlecase}} = ReturnTyp
88
appId,
99
apiKey,{{#hasRegionalHost}}region,{{/hasRegionalHost}}
1010
timeouts: {
11-
connect: DEFAULT_CONNECT_TIMEOUT_NODE,
12-
read: DEFAULT_READ_TIMEOUT_NODE,
13-
write: DEFAULT_WRITE_TIMEOUT_NODE,
11+
connect: {{#x-timeouts.server.connect}}{{{.}}}{{/x-timeouts.server.connect}},
12+
read: {{#x-timeouts.server.read}}{{{.}}}{{/x-timeouts.server.read}},
13+
write: {{#x-timeouts.server.write}}{{{.}}}{{/x-timeouts.server.write}},
1414
},
1515
logger: createNullLogger(),
1616
algoliaAgents: [{ segment: 'Fetch' }],

templates/javascript/clients/client/builds/liteNode.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ export type {{#lambda.titlecase}}{{clientName}}{{/lambda.titlecase}} = ReturnTyp
77
appId,
88
apiKey,{{#hasRegionalHost}}region,{{/hasRegionalHost}}
99
timeouts: {
10-
connect: DEFAULT_CONNECT_TIMEOUT_NODE,
11-
read: DEFAULT_READ_TIMEOUT_NODE,
12-
write: DEFAULT_WRITE_TIMEOUT_NODE,
10+
connect: {{#x-timeouts.server.connect}}{{{.}}}{{/x-timeouts.server.connect}},
11+
read: {{#x-timeouts.server.read}}{{{.}}}{{/x-timeouts.server.read}},
12+
write: {{#x-timeouts.server.write}}{{{.}}}{{/x-timeouts.server.write}},
1313
},
1414
logger: createNullLogger(),
1515
requester: createHttpRequester(),

templates/javascript/clients/client/builds/node.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ export type {{#lambda.titlecase}}{{clientName}}{{/lambda.titlecase}} = ReturnTyp
88
appId,
99
apiKey,{{#hasRegionalHost}}region,{{/hasRegionalHost}}
1010
timeouts: {
11-
connect: DEFAULT_CONNECT_TIMEOUT_NODE,
12-
read: DEFAULT_READ_TIMEOUT_NODE,
13-
write: DEFAULT_WRITE_TIMEOUT_NODE,
11+
connect: {{#x-timeouts.server.connect}}{{{.}}}{{/x-timeouts.server.connect}},
12+
read: {{#x-timeouts.server.read}}{{{.}}}{{/x-timeouts.server.read}},
13+
write: {{#x-timeouts.server.write}}{{{.}}}{{/x-timeouts.server.write}},
1414
},
1515
logger: createNullLogger(),
1616
requester: createHttpRequester(),

0 commit comments

Comments
 (0)