Skip to content

Commit 07ca0e0

Browse files
add package type
1 parent 4ed96dd commit 07ca0e0

File tree

5 files changed

+77
-6
lines changed

5 files changed

+77
-6
lines changed

redisinsight/api/src/modules/cloud/common/models/cloud-request-utm.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,12 @@ export class CloudRequestUtm {
3737
@IsString()
3838
@IsNotEmpty()
3939
amp?: string;
40+
41+
@ApiPropertyOptional({
42+
type: String,
43+
})
44+
@IsOptional()
45+
@IsString()
46+
@IsNotEmpty()
47+
package?: string;
4048
}

redisinsight/api/src/modules/cloud/user/cloud-user.api.service.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,11 @@ export class CloudUserApiService {
104104

105105
const preparedUtm = utm;
106106

107-
if (preparedUtm && !preparedUtm.amp) {
107+
if (preparedUtm && (!preparedUtm.amp || !preparedUtm.package)) {
108108
await this.serverService.getInfo()
109-
.then(({ id }) => {
110-
preparedUtm.amp = id;
109+
.then(({ id, packageType }) => {
110+
preparedUtm.amp = preparedUtm.amp || id;
111+
preparedUtm.package = preparedUtm.package || packageType;
111112
})
112113
.catch(() => {
113114
this.logger.warn('Unable to get server id for utm parameters');

redisinsight/api/src/modules/server/dto/server.dto.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
2+
import { PackageType } from 'src/modules/server/models/server';
23

34
export class GetServerInfoResponse {
45
@ApiProperty({
@@ -36,6 +37,13 @@ export class GetServerInfoResponse {
3637
})
3738
buildType: string;
3839

40+
@ApiProperty({
41+
description: 'Application package type.',
42+
enum: PackageType,
43+
example: 'app-image',
44+
})
45+
packageType: PackageType;
46+
3947
@ApiPropertyOptional({
4048
description: 'Fixed Redis database id.',
4149
type: String,

redisinsight/api/src/modules/server/models/server.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,15 @@ export enum BuildType {
88
}
99

1010
export enum PackageType {
11-
AppImage = 'appimage',
11+
Flatpak = 'flatpak',
12+
Snap = 'snap',
13+
UnknownLinux = 'unknown-linux',
14+
AppImage = 'app-image',
15+
Mas = 'mas',
16+
UnknownDarwin = 'unknown-darwin',
17+
WindowsStore = 'windows-store',
18+
UnknownWindows = 'unknown-windows',
19+
Unknown = 'unknown',
1220
}
1321

1422
export enum AppType {

redisinsight/api/src/modules/server/server.service.ts

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
import { Injectable, InternalServerErrorException, Logger, OnApplicationBootstrap } from '@nestjs/common';
1+
import {
2+
Injectable, InternalServerErrorException, Logger, OnApplicationBootstrap,
3+
} from '@nestjs/common';
24
import { EventEmitter2 } from '@nestjs/event-emitter';
35
import config, { Config } from 'src/utils/config';
46
import { AppAnalyticsEvents } from 'src/constants/app-events';
57
import { TelemetryEvents } from 'src/constants/telemetry-events';
68
import { ServerInfoNotFoundException } from 'src/constants/exceptions';
79
import { EncryptionService } from 'src/modules/encryption/encryption.service';
810
import { ServerRepository } from 'src/modules/server/repositories/server.repository';
9-
import { AppType, BuildType } from 'src/modules/server/models/server';
11+
import { AppType, BuildType, PackageType } from 'src/modules/server/models/server';
1012
import { GetServerInfoResponse } from 'src/modules/server/dto/server.dto';
1113
import { FeaturesConfigService } from 'src/modules/feature/features-config.service';
1214

@@ -88,6 +90,7 @@ export class ServerService implements OnApplicationBootstrap {
8890
appType: ServerService.getAppType(SERVER_CONFIG.buildType),
8991
encryptionStrategies: await this.encryptionService.getAvailableEncryptionStrategies(),
9092
fixedDatabaseId: REDIS_STACK_CONFIG?.id,
93+
packageType: ServerService.getPackageType(SERVER_CONFIG.buildType),
9194
...(await this.featuresConfigService.getControlInfo()),
9295
};
9396
this.logger.log('Succeed to get server info.');
@@ -110,4 +113,47 @@ export class ServerService implements OnApplicationBootstrap {
110113
return AppType.Unknown;
111114
}
112115
}
116+
117+
static getPackageType(buildType: string): PackageType {
118+
if (buildType === BuildType.Electron) {
119+
// Darwin
120+
if (process.platform === 'darwin') {
121+
if (process.env.mas || process['mas']) {
122+
return PackageType.Mas;
123+
}
124+
125+
return PackageType.UnknownDarwin;
126+
}
127+
128+
// Linux
129+
if (process.platform === 'linux') {
130+
if (process.env.APPIMAGE) {
131+
return PackageType.AppImage;
132+
}
133+
134+
if (process.env.SNAP_INSTANCE_NAME || process.env.SNAP_DATA) {
135+
return PackageType.Snap;
136+
}
137+
138+
if (process.env.container) {
139+
return PackageType.Flatpak;
140+
}
141+
142+
return PackageType.UnknownLinux;
143+
}
144+
145+
// Windows
146+
if (process.platform === 'win32') {
147+
if (process.env.windowsStore || process['windowsStore']) {
148+
return PackageType.WindowsStore;
149+
}
150+
151+
return PackageType.UnknownWindows;
152+
}
153+
154+
return PackageType.Unknown;
155+
}
156+
157+
return undefined;
158+
}
113159
}

0 commit comments

Comments
 (0)