Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(javascript): create ingestion client #1101

Merged
merged 14 commits into from
Dec 13, 2022
2 changes: 1 addition & 1 deletion .github/.cache_version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.0.14
0.0.16
Original file line number Diff line number Diff line change
Expand Up @@ -110,12 +110,15 @@ export function createTransporter({
: {};

const queryParameters: QueryParameters = {
'x-algolia-agent': algoliaAgent.value,
...baseQueryParameters,
...request.queryParameters,
...dataQueryParameters,
};

if (algoliaAgent.value) {
queryParameters['x-algolia-agent'] = algoliaAgent.value;
}

if (requestOptions && requestOptions.queryParameters) {
for (const key of Object.keys(requestOptions.queryParameters)) {
// We want to keep `undefined` and `null` values,
Expand Down
6 changes: 6 additions & 0 deletions config/openapitools.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@
"packageVersion": "1.0.0-alpha.27"
}
},
"javascript-ingestion": {
"output": "#{cwd}/clients/algoliasearch-client-javascript/packages/ingestion",
"additionalProperties": {
"packageVersion": "1.0.0-alpha.1"
}
},
"java-search": {
"output": "#{cwd}/clients/algoliasearch-client-java-2"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ private void setDefaultGeneratorOptions() {
additionalProperties.put("algoliaAgent", Utils.capitalize(CLIENT));
additionalProperties.put("gitRepoId", "algoliasearch-client-javascript");
additionalProperties.put("isSearchClient", CLIENT.equals("search"));
additionalProperties.put("useAlgoliaUA", !CLIENT.equals("ingestion"));
additionalProperties.put("isAlgoliasearchClient", isAlgoliasearchClient);

if (isAlgoliasearchClient) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,9 @@ public static void propagateGenericsToModels(Map<String, ModelsMap> modelsMap) {
public static void propagateGenericsToOperations(OperationsMap operations, List<ModelMap> allModels) {
Map<String, CodegenModel> models = convertToMap(allModels);
for (CodegenOperation ope : operations.getOperations().getOperation()) {
if (ope.returnType == null) {
continue;
}
CodegenModel returnType = models.get(ope.returnType);
if (returnType != null && hasGeneric(returnType)) {
ope.vendorExtensions.put("x-is-generic", true);
Expand Down
29 changes: 29 additions & 0 deletions playground/javascript/node/ingestion.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { ingestionClient } from '@algolia/ingestion';
import { ApiError } from '@algolia/client-common';
import dotenv from 'dotenv';

dotenv.config({ path: '../../.env' });

const appId = process.env.ALGOLIA_APPLICATION_ID || '**** APP_ID *****';
const apiKey =
process.env.ALGOLIA_ADMIN_KEY ||
'**** ADMIN_KEY *****';

// Init client with appId and apiKey
const client = ingestionClient(appId, apiKey, 'us', {authMode: 'WithinHeaders', hosts: [{url: 'staging-data.us.algolia.com', accept: 'readWrite', protocol: 'https'}]});

async function testIngestion() {
try {
const res = await client.getAuthentications();

console.log(`[OK]`, res);
} catch (e) {
if (e instanceof ApiError) {
return console.log(`[${e.status}] ${e.message}`, e.stackTrace, e);
}

console.log('[ERROR]', e);
}
}

testIngestion();
2 changes: 1 addition & 1 deletion playground/javascript/node/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"private": true,
"scripts": {
"start:algoliasearch": "ts-node algoliasearch.ts",
"start:abtesting": "ts-node analytics.ts",
"start:abtesting": "ts-node abtesting.ts",
"start:analytics": "ts-node analytics.ts",
"start:insights": "ts-node insights.ts",
"start:personalization": "ts-node personalization.ts",
Expand Down
4 changes: 4 additions & 0 deletions scripts/cts/generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ export async function ctsGenerateMany(
if (!getTestOutputFolder(gen.language)) {
continue;
}
// Remove this once we have CTS for ingestion
if (gen.key === 'javascript-ingestion') {
continue;
}
await ctsGenerate(gen, verbose);
}

Expand Down
22 changes: 16 additions & 6 deletions templates/javascript/clients/api-single.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,21 @@ export function create{{capitalizedApiName}}({
const transporter = createTransporter({
hosts: getDefaultHosts({{^hasRegionalHost}}appIdOption{{/hasRegionalHost}}{{#hasRegionalHost}}regionOption{{/hasRegionalHost}}),
...options,
algoliaAgent: getAlgoliaAgent({
algoliaAgents,
client: '{{{algoliaAgent}}}',
version: apiClientVersion,
}),
algoliaAgent:
{{^useAlgoliaUA}}
{...getAlgoliaAgent({
algoliaAgents,
client: '{{{algoliaAgent}}}',
version: apiClientVersion,
}), value: ''},
{{/useAlgoliaUA}}
{{#useAlgoliaUA}}
getAlgoliaAgent({
algoliaAgents,
client: '{{{algoliaAgent}}}',
version: apiClientVersion,
}),
{{/useAlgoliaUA}}
baseHeaders: {
'content-type': 'text/plain',
...auth.headers(),
Expand Down Expand Up @@ -75,7 +85,7 @@ export function create{{capitalizedApiName}}({
{{/isSearchClient}}
{{#operation}}
{{> client/api/operation/jsdoc}}
{{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}}> {
{{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}}> {
{{#vendorExtensions.x-legacy-signature}}
{{> client/api/operation/legacySearchCompatible/implementation}}
{{/vendorExtensions.x-legacy-signature}}
Expand Down