Skip to content

Commit deac88b

Browse files
authored
feat(javascript): create ingestion client (#1101)
1 parent 2f456a4 commit deac88b

File tree

10 files changed

+65
-9
lines changed

10 files changed

+65
-9
lines changed

.github/.cache_version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.0.14
1+
0.0.16

clients/algoliasearch-client-javascript/packages/client-common/src/transporter/createTransporter.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,15 @@ export function createTransporter({
110110
: {};
111111

112112
const queryParameters: QueryParameters = {
113-
'x-algolia-agent': algoliaAgent.value,
114113
...baseQueryParameters,
115114
...request.queryParameters,
116115
...dataQueryParameters,
117116
};
118117

118+
if (algoliaAgent.value) {
119+
queryParameters['x-algolia-agent'] = algoliaAgent.value;
120+
}
121+
119122
if (requestOptions && requestOptions.queryParameters) {
120123
for (const key of Object.keys(requestOptions.queryParameters)) {
121124
// We want to keep `undefined` and `null` values,

config/openapitools.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@
6565
"packageVersion": "1.0.0-alpha.27"
6666
}
6767
},
68+
"javascript-ingestion": {
69+
"output": "#{cwd}/clients/algoliasearch-client-javascript/packages/ingestion",
70+
"additionalProperties": {
71+
"packageVersion": "1.0.0-alpha.1"
72+
}
73+
},
6874
"java-search": {
6975
"output": "#{cwd}/clients/algoliasearch-client-java-2"
7076
},

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ private void setDefaultGeneratorOptions() {
119119
additionalProperties.put("algoliaAgent", Utils.capitalize(CLIENT));
120120
additionalProperties.put("gitRepoId", "algoliasearch-client-javascript");
121121
additionalProperties.put("isSearchClient", CLIENT.equals("search"));
122+
additionalProperties.put("useAlgoliaUA", !CLIENT.equals("ingestion"));
122123
additionalProperties.put("isAlgoliasearchClient", isAlgoliasearchClient);
123124

124125
if (isAlgoliasearchClient) {

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,9 @@ public static void propagateGenericsToModels(Map<String, ModelsMap> modelsMap) {
169169
public static void propagateGenericsToOperations(OperationsMap operations, List<ModelMap> allModels) {
170170
Map<String, CodegenModel> models = convertToMap(allModels);
171171
for (CodegenOperation ope : operations.getOperations().getOperation()) {
172+
if (ope.returnType == null) {
173+
continue;
174+
}
172175
CodegenModel returnType = models.get(ope.returnType);
173176
if (returnType != null && hasGeneric(returnType)) {
174177
ope.vendorExtensions.put("x-is-generic", true);
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { ingestionClient } from '@algolia/ingestion';
2+
import { ApiError } from '@algolia/client-common';
3+
import dotenv from 'dotenv';
4+
5+
dotenv.config({ path: '../../.env' });
6+
7+
const appId = process.env.ALGOLIA_APPLICATION_ID || '**** APP_ID *****';
8+
const apiKey =
9+
process.env.ALGOLIA_ADMIN_KEY ||
10+
'**** ADMIN_KEY *****';
11+
12+
// Init client with appId and apiKey
13+
const client = ingestionClient(appId, apiKey, 'us', {authMode: 'WithinHeaders', hosts: [{url: 'staging-data.us.algolia.com', accept: 'readWrite', protocol: 'https'}]});
14+
15+
async function testIngestion() {
16+
try {
17+
const res = await client.getAuthentications();
18+
19+
console.log(`[OK]`, res);
20+
} catch (e) {
21+
if (e instanceof ApiError) {
22+
return console.log(`[${e.status}] ${e.message}`, e.stackTrace, e);
23+
}
24+
25+
console.log('[ERROR]', e);
26+
}
27+
}
28+
29+
testIngestion();

playground/javascript/node/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"private": true,
55
"scripts": {
66
"start:algoliasearch": "ts-node algoliasearch.ts",
7-
"start:abtesting": "ts-node analytics.ts",
7+
"start:abtesting": "ts-node abtesting.ts",
88
"start:analytics": "ts-node analytics.ts",
99
"start:insights": "ts-node insights.ts",
1010
"start:personalization": "ts-node personalization.ts",

scripts/cts/generate.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ export async function ctsGenerateMany(
2929
if (!getTestOutputFolder(gen.language)) {
3030
continue;
3131
}
32+
// Remove this once we have CTS for ingestion
33+
if (gen.key === 'javascript-ingestion') {
34+
continue;
35+
}
3236
await ctsGenerate(gen, verbose);
3337
}
3438

templates/javascript/clients/api-single.mustache

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,21 @@ export function create{{capitalizedApiName}}({
1919
const transporter = createTransporter({
2020
hosts: getDefaultHosts({{^hasRegionalHost}}appIdOption{{/hasRegionalHost}}{{#hasRegionalHost}}regionOption{{/hasRegionalHost}}),
2121
...options,
22-
algoliaAgent: getAlgoliaAgent({
23-
algoliaAgents,
24-
client: '{{{algoliaAgent}}}',
25-
version: apiClientVersion,
26-
}),
22+
algoliaAgent:
23+
{{^useAlgoliaUA}}
24+
{...getAlgoliaAgent({
25+
algoliaAgents,
26+
client: '{{{algoliaAgent}}}',
27+
version: apiClientVersion,
28+
}), value: ''},
29+
{{/useAlgoliaUA}}
30+
{{#useAlgoliaUA}}
31+
getAlgoliaAgent({
32+
algoliaAgents,
33+
client: '{{{algoliaAgent}}}',
34+
version: apiClientVersion,
35+
}),
36+
{{/useAlgoliaUA}}
2737
baseHeaders: {
2838
'content-type': 'text/plain',
2939
...auth.headers(),
@@ -75,7 +85,7 @@ export function create{{capitalizedApiName}}({
7585
{{/isSearchClient}}
7686
{{#operation}}
7787
{{> client/api/operation/jsdoc}}
78-
{{nickname}}{{#vendorExtensions.x-is-generic}}<T>{{/vendorExtensions.x-is-generic}}( {{> client/api/operation/parameters}} ) : Promise<{{{returnType}}}{{#vendorExtensions.x-is-generic}}<T>{{/vendorExtensions.x-is-generic}}> {
88+
{{nickname}}{{#vendorExtensions.x-is-generic}}<T>{{/vendorExtensions.x-is-generic}}( {{> client/api/operation/parameters}} ) : Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}{{#vendorExtensions.x-is-generic}}<T>{{/vendorExtensions.x-is-generic}}> {
7989
{{#vendorExtensions.x-legacy-signature}}
8090
{{> client/api/operation/legacySearchCompatible/implementation}}
8191
{{/vendorExtensions.x-legacy-signature}}

0 commit comments

Comments
 (0)