Skip to content

Commit c7a8638

Browse files
committed
refactor(log-drain): move commands from v2 to v4 endpoints
1 parent 8d273a2 commit c7a8638

23 files changed

+511
-212
lines changed

src/clients/cc-api/commands/log-drain/create-log-drain-command.js

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,42 @@
11
/**
22
* @import { CreateLogDrainCommandInput, CreateLogDrainCommandOutput } from './create-log-drain-command.types.js';
3-
* @import { LogDrainTarget } from './log-drain.types.js';
3+
* @import { LogDrainTarget, LogDrainKind } from './log-drain.types.js';
44
*/
55
import { post } from '../../../../lib/request/request-params-builder.js';
66
import { safeUrl } from '../../../../lib/utils.js';
77
import { CcApiCompositeCommand, CcApiSimpleCommand } from '../../lib/cc-api-command.js';
8-
import { GetLogDrainCommand } from './get-log-drain-command.js';
8+
import { waitForLogDrainEnabled } from './log-drain-utils.js';
99

1010
/**
1111
*
1212
* @extends {CcApiCompositeCommand<CreateLogDrainCommandInput, CreateLogDrainCommandOutput>}
13-
* @endpoint [POST] /v2/logs/:XXX/drains
14-
* @endpoint [GET] /v2/logs/:XXX/drains/:XXX
13+
* @endpoint [POST] /v4/drains/organisations/:XXX/applications/:XXX/drains
14+
* @endpoint [GET] /v4/drains/organisations/:XXX/applications/:XXX/drains/:XXX
1515
* @group LogDrain
16-
* @version 2
16+
* @version 4
1717
*/
1818
export class CreateLogDrainCommand extends CcApiCompositeCommand {
1919
/** @type {CcApiCompositeCommand<CreateLogDrainCommandInput, CreateLogDrainCommandOutput>['compose']} */
2020
async compose(params, composer) {
2121
const created = await composer.send(new CreateLogDrainInnerCommand(params));
22-
23-
return composer.send(
24-
new GetLogDrainCommand(
25-
'applicationId' in params
26-
? { applicationId: params.applicationId, drainId: created.id }
27-
: { addonId: params.addonId, drainId: created.id },
28-
),
29-
);
22+
return waitForLogDrainEnabled(composer, params.ownerId, params.applicationId, created.id);
3023
}
3124
}
3225

3326
/**
3427
*
3528
* @extends {CcApiSimpleCommand<CreateLogDrainCommandInput, {id: string}>}
36-
* @endpoint [POST] /v2/logs/:XXX/drains
29+
* @endpoint [POST] /v4/drains/organisations/:XXX/applications/:XXX/drains
3730
* @group LogDrain
38-
* @version 2
31+
* @version 4
3932
*/
4033
class CreateLogDrainInnerCommand extends CcApiSimpleCommand {
4134
/** @type {CcApiSimpleCommand<CreateLogDrainCommandInput, {id: string}>['toRequestParams']} */
4235
toRequestParams(params) {
43-
const resourceId = 'applicationId' in params ? params.applicationId : params.addonId;
44-
45-
return post(safeUrl`/v2/logs/${resourceId}/drains`, this.#getBody(params.target));
36+
return post(
37+
safeUrl`/v4/drains/organisations/${params.ownerId}/applications/${params.applicationId}/drains`,
38+
this.#getBody(params.target, params.kind),
39+
);
4640
}
4741

4842
/** @type {CcApiSimpleCommand<CreateLogDrainCommandInput, {id: string}>['transformCommandOutput']} */
@@ -53,34 +47,49 @@ class CreateLogDrainInnerCommand extends CcApiSimpleCommand {
5347
/** @type {CcApiSimpleCommand<?, ?>['getIdsToResolve']} */
5448
getIdsToResolve() {
5549
return {
56-
addonId: 'ADDON_ID',
50+
ownerId: true,
5751
};
5852
}
5953

6054
/**
6155
* @param {LogDrainTarget} drain
56+
* @param {LogDrainKind} kind
6257
*/
63-
#getBody(drain) {
58+
#getBody(drain, kind) {
6459
/** @type {any} */
6560
const body = {
66-
url: drain.url,
67-
drainType: drain.type,
61+
kind,
62+
recipient: {
63+
type: drain.type,
64+
url: drain.url,
65+
},
6866
};
6967

70-
if (drain.type === 'HTTP' || drain.type === 'ElasticSearch') {
68+
// RAW_HTTP and ELASTICSEARCH: credentials
69+
if (drain.type === 'RAW_HTTP' || drain.type === 'ELASTICSEARCH') {
7170
if (drain.credentials != null) {
72-
body.credentials = drain.credentials;
71+
body.recipient.username = drain.credentials.username;
72+
body.recipient.password = drain.credentials.password;
7373
}
7474
}
7575

76-
if (drain.type === 'ElasticSearch') {
76+
// ELASTICSEARCH: index (renamed from indexPrefix)
77+
if (drain.type === 'ELASTICSEARCH') {
7778
if (drain.indexPrefix != null) {
78-
body.indexPrefix = drain.indexPrefix;
79+
body.recipient.index = drain.indexPrefix;
7980
}
8081
}
8182

82-
if (drain.type === 'NewRelicHTTP') {
83-
body.apiKey = drain.apiKey;
83+
// NEWRELIC: apiKey
84+
if (drain.type === 'NEWRELIC') {
85+
body.recipient.apiKey = drain.apiKey;
86+
}
87+
88+
// Syslog: RFC 5424 structured data parameters
89+
if (drain.type === 'SYSLOG_TCP' || drain.type === 'SYSLOG_UDP') {
90+
if (drain.structuredDataParameters != null) {
91+
body.recipient.rfc5424StructuredDataParameters = drain.structuredDataParameters;
92+
}
8493
}
8594

8695
return body;

src/clients/cc-api/commands/log-drain/create-log-drain-command.types.d.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
import type { LogDrain, LogDrainTarget } from './log-drain.types.js';
1+
import { ApplicationId } from '../../types/cc-api.types.js';
2+
import type { LogDrain, LogDrainKind, LogDrainTarget } from './log-drain.types.js';
23

3-
export type CreateLogDrainCommandInput = ({ applicationId: string } | { addonId: string }) & {
4+
export type CreateLogDrainCommandInput = ApplicationId & {
5+
kind: LogDrainKind;
46
target: LogDrainTarget;
57
};
68

src/clients/cc-api/commands/log-drain/delete-log-drain-command.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,27 @@ import { CcApiSimpleCommand } from '../../lib/cc-api-command.js';
88
/**
99
*
1010
* @extends {CcApiSimpleCommand<DeleteLogDrainCommandInput, void>}
11-
* @endpoint [DELETE] /v2/logs/:XXX/drains/:XXX
11+
* @endpoint [DELETE] /v4/drains/organisations/:XXX/applications/:XXX/drains/:XXX
1212
* @group LogDrain
13-
* @version 2
13+
* @version 4
1414
*/
1515
export class DeleteLogDrainCommand extends CcApiSimpleCommand {
1616
/** @type {CcApiSimpleCommand<DeleteLogDrainCommandInput, void>['toRequestParams']} */
1717
toRequestParams(params) {
18-
const resourceId = 'applicationId' in params ? params.applicationId : params.addonId;
18+
return delete_(
19+
safeUrl`/v4/drains/organisations/${params.ownerId}/applications/${params.applicationId}/drains/${params.drainId}`,
20+
);
21+
}
1922

20-
return delete_(safeUrl`/v2/logs/${resourceId}/drains/${params.drainId}`);
23+
/** @type {CcApiSimpleCommand<DeleteLogDrainCommandInput, void>['transformCommandOutput']} */
24+
transformCommandOutput() {
25+
return null;
2126
}
2227

2328
/** @type {CcApiSimpleCommand<?, ?>['getIdsToResolve']} */
2429
getIdsToResolve() {
2530
return {
26-
addonId: 'ADDON_ID',
31+
ownerId: true,
2732
};
2833
}
2934
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1-
export type DeleteLogDrainCommandInput = ({ applicationId: string } | { addonId: string }) & {
1+
import { ApplicationId } from '../../types/cc-api.types.js';
2+
3+
export type DeleteLogDrainCommandInput = ApplicationId & {
24
drainId: string;
35
};
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/**
2+
* @import { DisableLogDrainCommandInput, DisableLogDrainCommandOutput } from './disable-log-drain-command.types.js';
3+
*/
4+
import { put } from '../../../../lib/request/request-params-builder.js';
5+
import { safeUrl } from '../../../../lib/utils.js';
6+
import { CcApiCompositeCommand, CcApiSimpleCommand } from '../../lib/cc-api-command.js';
7+
import { waitForLogDrainDisabled } from './log-drain-utils.js';
8+
9+
/**
10+
*
11+
* @extends {CcApiCompositeCommand<DisableLogDrainCommandInput, DisableLogDrainCommandOutput>}
12+
* @endpoint [PUT] /v4/drains/organisations/:XXX/applications/:XXX/drains/:XXX/disable
13+
* @endpoint [GET] /v4/drains/organisations/:XXX/applications/:XXX/drains/:XXX
14+
* @group LogDrain
15+
* @version 4
16+
*/
17+
export class DisableLogDrainCommand extends CcApiCompositeCommand {
18+
/** @type {CcApiCompositeCommand<DisableLogDrainCommandInput, DisableLogDrainCommandOutput>['compose']} */
19+
async compose(params, composer) {
20+
await composer.send(new InnerDisableLogDrainCommand(params));
21+
return waitForLogDrainDisabled(composer, params.ownerId, params.applicationId, params.drainId);
22+
}
23+
}
24+
25+
/**
26+
*
27+
* @extends {CcApiSimpleCommand<DisableLogDrainCommandInput, void>}
28+
* @endpoint [PUT] /v4/drains/organisations/:XXX/applications/:XXX/drains/:XXX/disable
29+
* @group LogDrain
30+
* @version 4
31+
*/
32+
class InnerDisableLogDrainCommand extends CcApiSimpleCommand {
33+
/** @type {CcApiSimpleCommand<DisableLogDrainCommandInput, void>['toRequestParams']} */
34+
toRequestParams(params) {
35+
return put(
36+
safeUrl`/v4/drains/organisations/${params.ownerId}/applications/${params.applicationId}/drains/${params.drainId}/disable`,
37+
);
38+
}
39+
40+
/** @type {CcApiSimpleCommand<DisableLogDrainCommandInput, void>['transformCommandOutput']} */
41+
transformCommandOutput() {
42+
return null;
43+
}
44+
45+
/** @type {CcApiSimpleCommand<?, ?>['getIdsToResolve']} */
46+
getIdsToResolve() {
47+
return {
48+
ownerId: true,
49+
};
50+
}
51+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import type { ApplicationId } from '../../types/cc-api.types.js';
2+
import type { LogDrain } from './log-drain.types.js';
3+
4+
export type DisableLogDrainCommandInput = ApplicationId & {
5+
drainId: string;
6+
};
7+
8+
export type DisableLogDrainCommandOutput = LogDrain;
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/**
2+
* @import { EnableLogDrainCommandInput, EnableLogDrainCommandOutput } from './enable-log-drain-command.types.js';
3+
*/
4+
import { put } from '../../../../lib/request/request-params-builder.js';
5+
import { safeUrl } from '../../../../lib/utils.js';
6+
import { CcApiCompositeCommand, CcApiSimpleCommand } from '../../lib/cc-api-command.js';
7+
import { waitForLogDrainEnabled } from './log-drain-utils.js';
8+
9+
/**
10+
*
11+
* @extends {CcApiCompositeCommand<EnableLogDrainCommandInput, EnableLogDrainCommandOutput>}
12+
* @endpoint [PUT] /v4/drains/organisations/:XXX/applications/:XXX/drains/:XXX/enable
13+
* @endpoint [GET] /v4/drains/organisations/:XXX/applications/:XXX/drains/:XXX
14+
* @group LogDrain
15+
* @version 4
16+
*/
17+
export class EnableLogDrainCommand extends CcApiCompositeCommand {
18+
/** @type {CcApiCompositeCommand<EnableLogDrainCommandInput, EnableLogDrainCommandOutput>['compose']} */
19+
async compose(params, composer) {
20+
await composer.send(new InnerEnableLogDrainCommand(params));
21+
return waitForLogDrainEnabled(composer, params.ownerId, params.applicationId, params.drainId);
22+
}
23+
}
24+
25+
/**
26+
*
27+
* @extends {CcApiSimpleCommand<EnableLogDrainCommandInput, void>}
28+
* @endpoint [PUT] /v4/drains/organisations/:XXX/applications/:XXX/drains/:XXX/enable
29+
* @group LogDrain
30+
* @version 4
31+
*/
32+
class InnerEnableLogDrainCommand extends CcApiSimpleCommand {
33+
/** @type {CcApiSimpleCommand<EnableLogDrainCommandInput, void>['toRequestParams']} */
34+
toRequestParams(params) {
35+
return put(
36+
safeUrl`/v4/drains/organisations/${params.ownerId}/applications/${params.applicationId}/drains/${params.drainId}/enable`,
37+
);
38+
}
39+
40+
/** @type {CcApiSimpleCommand<EnableLogDrainCommandInput, void>['transformCommandOutput']} */
41+
transformCommandOutput() {
42+
return null;
43+
}
44+
45+
/** @type {CcApiSimpleCommand<?, ?>['getIdsToResolve']} */
46+
getIdsToResolve() {
47+
return {
48+
ownerId: true,
49+
};
50+
}
51+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { ApplicationId } from '../../types/cc-api.types.js';
2+
import type { LogDrain } from './log-drain.types.js';
3+
4+
export type EnableLogDrainCommandInput = ApplicationId & {
5+
drainId: string;
6+
};
7+
8+
export type EnableLogDrainCommandOutput = LogDrain;

src/clients/cc-api/commands/log-drain/get-log-drain-command.js

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,27 @@ import { transformLogDrain } from './log-drain-transform.js';
99
/**
1010
*
1111
* @extends {CcApiSimpleCommand<GetLogDrainCommandInput, GetLogDrainCommandOutput>}
12-
* @endpoint [GET] /v2/logs/:XXX/drains/:XXX
12+
* @endpoint [GET] /v4/drains/organisations/:XXX/applications/:XXX/drains/:XXX
1313
* @group LogDrain
14-
* @version 2
14+
* @version 4
1515
*/
1616
export class GetLogDrainCommand extends CcApiSimpleCommand {
1717
/** @type {CcApiSimpleCommand<GetLogDrainCommandInput, GetLogDrainCommandOutput>['toRequestParams']} */
1818
toRequestParams(params) {
19-
const resourceId = 'applicationId' in params ? params.applicationId : params.addonId;
20-
21-
return get(safeUrl`/v2/logs/${resourceId}/drains/${params.drainId}`);
19+
return get(
20+
safeUrl`/v4/drains/organisations/${params.ownerId}/applications/${params.applicationId}/drains/${params.drainId}`,
21+
);
2222
}
2323

2424
/** @type {CcApiSimpleCommand<GetLogDrainCommandInput, GetLogDrainCommandOutput>['transformCommandOutput']} */
2525
transformCommandOutput(response) {
26-
if (response == null) {
27-
return null;
28-
}
29-
if (response.length === 0) {
30-
return null;
31-
}
32-
return transformLogDrain(response[0]);
26+
return transformLogDrain(response);
3327
}
3428

3529
/** @type {CcApiSimpleCommand<?, ?>['getIdsToResolve']} */
3630
getIdsToResolve() {
3731
return {
38-
addonId: 'ADDON_ID',
32+
ownerId: true,
3933
};
4034
}
4135
}

src/clients/cc-api/commands/log-drain/get-log-drain-command.types.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
import { ApplicationId } from '../../types/cc-api.types.js';
12
import type { LogDrain } from './log-drain.types.js';
23

3-
export type GetLogDrainCommandInput = ({ applicationId: string } | { addonId: string }) & {
4+
export type GetLogDrainCommandInput = ApplicationId & {
45
drainId: string;
56
};
67

0 commit comments

Comments
 (0)