Skip to content

Commit 817ba32

Browse files
authored
feat(js): pass searchParams to EchoRequester, update CTS (#70)
1 parent a39a6c7 commit 817ba32

File tree

55 files changed

+1240
-1705
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+1240
-1705
lines changed

clients/algoliasearch-client-javascript/client-analytics/src/analyticsApi.ts

Lines changed: 56 additions & 471 deletions
Large diffs are not rendered by default.

clients/algoliasearch-client-javascript/client-analytics/utils/requester/EchoRequester.ts

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,58 @@ import type { EndRequest, Request, Response } from '../types';
22

33
import { Requester } from './Requester';
44

5+
type AdditionalContent = {
6+
headers: Record<string, string>;
7+
connectTimeout: number;
8+
responseTimeout: number;
9+
userAgent?: string;
10+
searchParams?: Record<string, any>;
11+
};
12+
13+
function searchParamsWithoutUA(
14+
params: URLSearchParams
15+
): AdditionalContent['searchParams'] {
16+
const searchParams = {};
17+
18+
for (const [k, v] of params) {
19+
if (k === 'x-algolia-agent') {
20+
continue;
21+
}
22+
23+
searchParams[k] = v;
24+
}
25+
26+
return Object.entries(searchParams).length === 0 ? undefined : searchParams;
27+
}
28+
529
export class EchoRequester extends Requester {
630
constructor(private status = 200) {
731
super();
832
}
933

10-
send(_request: EndRequest, originalRequest: Request): Promise<Response> {
34+
send(
35+
{ headers, url, connectTimeout, responseTimeout }: EndRequest,
36+
{ data, ...originalRequest }: Request
37+
): Promise<Response> {
38+
const urlSearchParams = new URL(url).searchParams;
39+
const userAgent = urlSearchParams.get('x-algolia-agent') || undefined;
40+
const searchParams = searchParamsWithoutUA(urlSearchParams);
41+
const additionalContent: AdditionalContent = {
42+
headers,
43+
connectTimeout,
44+
responseTimeout,
45+
userAgent: userAgent ? encodeURI(userAgent) : undefined,
46+
searchParams,
47+
};
48+
const originalData =
49+
data && Object.entries(data).length > 0 ? data : undefined;
50+
1151
return Promise.resolve({
12-
content: JSON.stringify(originalRequest),
52+
content: JSON.stringify({
53+
...originalRequest,
54+
...additionalContent,
55+
data: originalData,
56+
}),
1357
isTimedOut: false,
1458
status: this.status,
1559
});

clients/algoliasearch-client-javascript/client-insights/utils/requester/EchoRequester.ts

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,58 @@ import type { EndRequest, Request, Response } from '../types';
22

33
import { Requester } from './Requester';
44

5+
type AdditionalContent = {
6+
headers: Record<string, string>;
7+
connectTimeout: number;
8+
responseTimeout: number;
9+
userAgent?: string;
10+
searchParams?: Record<string, any>;
11+
};
12+
13+
function searchParamsWithoutUA(
14+
params: URLSearchParams
15+
): AdditionalContent['searchParams'] {
16+
const searchParams = {};
17+
18+
for (const [k, v] of params) {
19+
if (k === 'x-algolia-agent') {
20+
continue;
21+
}
22+
23+
searchParams[k] = v;
24+
}
25+
26+
return Object.entries(searchParams).length === 0 ? undefined : searchParams;
27+
}
28+
529
export class EchoRequester extends Requester {
630
constructor(private status = 200) {
731
super();
832
}
933

10-
send(_request: EndRequest, originalRequest: Request): Promise<Response> {
34+
send(
35+
{ headers, url, connectTimeout, responseTimeout }: EndRequest,
36+
{ data, ...originalRequest }: Request
37+
): Promise<Response> {
38+
const urlSearchParams = new URL(url).searchParams;
39+
const userAgent = urlSearchParams.get('x-algolia-agent') || undefined;
40+
const searchParams = searchParamsWithoutUA(urlSearchParams);
41+
const additionalContent: AdditionalContent = {
42+
headers,
43+
connectTimeout,
44+
responseTimeout,
45+
userAgent: userAgent ? encodeURI(userAgent) : undefined,
46+
searchParams,
47+
};
48+
const originalData =
49+
data && Object.entries(data).length > 0 ? data : undefined;
50+
1151
return Promise.resolve({
12-
content: JSON.stringify(originalRequest),
52+
content: JSON.stringify({
53+
...originalRequest,
54+
...additionalContent,
55+
data: originalData,
56+
}),
1357
isTimedOut: false,
1458
status: this.status,
1559
});

clients/algoliasearch-client-javascript/client-personalization/utils/requester/EchoRequester.ts

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,58 @@ import type { EndRequest, Request, Response } from '../types';
22

33
import { Requester } from './Requester';
44

5+
type AdditionalContent = {
6+
headers: Record<string, string>;
7+
connectTimeout: number;
8+
responseTimeout: number;
9+
userAgent?: string;
10+
searchParams?: Record<string, any>;
11+
};
12+
13+
function searchParamsWithoutUA(
14+
params: URLSearchParams
15+
): AdditionalContent['searchParams'] {
16+
const searchParams = {};
17+
18+
for (const [k, v] of params) {
19+
if (k === 'x-algolia-agent') {
20+
continue;
21+
}
22+
23+
searchParams[k] = v;
24+
}
25+
26+
return Object.entries(searchParams).length === 0 ? undefined : searchParams;
27+
}
28+
529
export class EchoRequester extends Requester {
630
constructor(private status = 200) {
731
super();
832
}
933

10-
send(_request: EndRequest, originalRequest: Request): Promise<Response> {
34+
send(
35+
{ headers, url, connectTimeout, responseTimeout }: EndRequest,
36+
{ data, ...originalRequest }: Request
37+
): Promise<Response> {
38+
const urlSearchParams = new URL(url).searchParams;
39+
const userAgent = urlSearchParams.get('x-algolia-agent') || undefined;
40+
const searchParams = searchParamsWithoutUA(urlSearchParams);
41+
const additionalContent: AdditionalContent = {
42+
headers,
43+
connectTimeout,
44+
responseTimeout,
45+
userAgent: userAgent ? encodeURI(userAgent) : undefined,
46+
searchParams,
47+
};
48+
const originalData =
49+
data && Object.entries(data).length > 0 ? data : undefined;
50+
1151
return Promise.resolve({
12-
content: JSON.stringify(originalRequest),
52+
content: JSON.stringify({
53+
...originalRequest,
54+
...additionalContent,
55+
data: originalData,
56+
}),
1357
isTimedOut: false,
1458
status: this.status,
1559
});

clients/algoliasearch-client-javascript/client-search/utils/requester/EchoRequester.ts

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,58 @@ import type { EndRequest, Request, Response } from '../types';
22

33
import { Requester } from './Requester';
44

5+
type AdditionalContent = {
6+
headers: Record<string, string>;
7+
connectTimeout: number;
8+
responseTimeout: number;
9+
userAgent?: string;
10+
searchParams?: Record<string, any>;
11+
};
12+
13+
function searchParamsWithoutUA(
14+
params: URLSearchParams
15+
): AdditionalContent['searchParams'] {
16+
const searchParams = {};
17+
18+
for (const [k, v] of params) {
19+
if (k === 'x-algolia-agent') {
20+
continue;
21+
}
22+
23+
searchParams[k] = v;
24+
}
25+
26+
return Object.entries(searchParams).length === 0 ? undefined : searchParams;
27+
}
28+
529
export class EchoRequester extends Requester {
630
constructor(private status = 200) {
731
super();
832
}
933

10-
send(_request: EndRequest, originalRequest: Request): Promise<Response> {
34+
send(
35+
{ headers, url, connectTimeout, responseTimeout }: EndRequest,
36+
{ data, ...originalRequest }: Request
37+
): Promise<Response> {
38+
const urlSearchParams = new URL(url).searchParams;
39+
const userAgent = urlSearchParams.get('x-algolia-agent') || undefined;
40+
const searchParams = searchParamsWithoutUA(urlSearchParams);
41+
const additionalContent: AdditionalContent = {
42+
headers,
43+
connectTimeout,
44+
responseTimeout,
45+
userAgent: userAgent ? encodeURI(userAgent) : undefined,
46+
searchParams,
47+
};
48+
const originalData =
49+
data && Object.entries(data).length > 0 ? data : undefined;
50+
1151
return Promise.resolve({
12-
content: JSON.stringify(originalRequest),
52+
content: JSON.stringify({
53+
...originalRequest,
54+
...additionalContent,
55+
data: originalData,
56+
}),
1357
isTimedOut: false,
1458
status: this.status,
1559
});

clients/algoliasearch-client-javascript/recommend/utils/requester/EchoRequester.ts

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,58 @@ import type { EndRequest, Request, Response } from '../types';
22

33
import { Requester } from './Requester';
44

5+
type AdditionalContent = {
6+
headers: Record<string, string>;
7+
connectTimeout: number;
8+
responseTimeout: number;
9+
userAgent?: string;
10+
searchParams?: Record<string, any>;
11+
};
12+
13+
function searchParamsWithoutUA(
14+
params: URLSearchParams
15+
): AdditionalContent['searchParams'] {
16+
const searchParams = {};
17+
18+
for (const [k, v] of params) {
19+
if (k === 'x-algolia-agent') {
20+
continue;
21+
}
22+
23+
searchParams[k] = v;
24+
}
25+
26+
return Object.entries(searchParams).length === 0 ? undefined : searchParams;
27+
}
28+
529
export class EchoRequester extends Requester {
630
constructor(private status = 200) {
731
super();
832
}
933

10-
send(_request: EndRequest, originalRequest: Request): Promise<Response> {
34+
send(
35+
{ headers, url, connectTimeout, responseTimeout }: EndRequest,
36+
{ data, ...originalRequest }: Request
37+
): Promise<Response> {
38+
const urlSearchParams = new URL(url).searchParams;
39+
const userAgent = urlSearchParams.get('x-algolia-agent') || undefined;
40+
const searchParams = searchParamsWithoutUA(urlSearchParams);
41+
const additionalContent: AdditionalContent = {
42+
headers,
43+
connectTimeout,
44+
responseTimeout,
45+
userAgent: userAgent ? encodeURI(userAgent) : undefined,
46+
searchParams,
47+
};
48+
const originalData =
49+
data && Object.entries(data).length > 0 ? data : undefined;
50+
1151
return Promise.resolve({
12-
content: JSON.stringify(originalRequest),
52+
content: JSON.stringify({
53+
...originalRequest,
54+
...additionalContent,
55+
data: originalData,
56+
}),
1357
isTimedOut: false,
1458
status: this.status,
1559
});

clients/algoliasearch-client-javascript/utils/requester/EchoRequester.ts

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,58 @@ import type { EndRequest, Request, Response } from '../types';
22

33
import { Requester } from './Requester';
44

5+
type AdditionalContent = {
6+
headers: Record<string, string>;
7+
connectTimeout: number;
8+
responseTimeout: number;
9+
userAgent?: string;
10+
searchParams?: Record<string, any>;
11+
};
12+
13+
function searchParamsWithoutUA(
14+
params: URLSearchParams
15+
): AdditionalContent['searchParams'] {
16+
const searchParams = {};
17+
18+
for (const [k, v] of params) {
19+
if (k === 'x-algolia-agent') {
20+
continue;
21+
}
22+
23+
searchParams[k] = v;
24+
}
25+
26+
return Object.entries(searchParams).length === 0 ? undefined : searchParams;
27+
}
28+
529
export class EchoRequester extends Requester {
630
constructor(private status = 200) {
731
super();
832
}
933

10-
send(_request: EndRequest, originalRequest: Request): Promise<Response> {
34+
send(
35+
{ headers, url, connectTimeout, responseTimeout }: EndRequest,
36+
{ data, ...originalRequest }: Request
37+
): Promise<Response> {
38+
const urlSearchParams = new URL(url).searchParams;
39+
const userAgent = urlSearchParams.get('x-algolia-agent') || undefined;
40+
const searchParams = searchParamsWithoutUA(urlSearchParams);
41+
const additionalContent: AdditionalContent = {
42+
headers,
43+
connectTimeout,
44+
responseTimeout,
45+
userAgent: userAgent ? encodeURI(userAgent) : undefined,
46+
searchParams,
47+
};
48+
const originalData =
49+
data && Object.entries(data).length > 0 ? data : undefined;
50+
1151
return Promise.resolve({
12-
content: JSON.stringify(originalRequest),
52+
content: JSON.stringify({
53+
...originalRequest,
54+
...additionalContent,
55+
data: originalData,
56+
}),
1357
isTimedOut: false,
1458
status: this.status,
1559
});

specs/analytics/paths/common/parameters.yml

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,9 @@ Limit:
4343
default: 10
4444

4545
Search:
46-
in: path
47-
name: search
48-
description: The query term. Must match the exact user input.
49-
required: true
50-
schema:
51-
type: string
52-
53-
SearchInPath:
54-
in: path
46+
in: query
5547
name: search
56-
description: The query term. Must match the exact user input.
57-
required: true
48+
description: The query term to search for. Must match the exact user input.
5849
schema:
5950
type: string
6051

0 commit comments

Comments
 (0)