Skip to content

Commit 8ef282f

Browse files
Merge pull request #3423 from RedisInsight/be/feature/add-package-type
add package type
2 parents fb5ab09 + 214136f commit 8ef282f

File tree

5 files changed

+79
-6
lines changed

5 files changed

+79
-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: 50 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

@@ -51,6 +53,7 @@ export class ServerService implements OnApplicationBootstrap {
5153
sessionId: this.sessionId,
5254
appType: ServerService.getAppType(SERVER_CONFIG.buildType),
5355
appVersion: SERVER_CONFIG.appVersion,
56+
packageType: ServerService.getPackageType(SERVER_CONFIG.buildType),
5457
...(await this.featuresConfigService.getControlInfo()),
5558
});
5659

@@ -63,6 +66,7 @@ export class ServerService implements OnApplicationBootstrap {
6366
osPlatform: process.platform,
6467
buildType: SERVER_CONFIG.buildType,
6568
port: SERVER_CONFIG.port,
69+
packageType: ServerService.getPackageType(SERVER_CONFIG.buildType),
6670
},
6771
nonTracking: true,
6872
});
@@ -88,6 +92,7 @@ export class ServerService implements OnApplicationBootstrap {
8892
appType: ServerService.getAppType(SERVER_CONFIG.buildType),
8993
encryptionStrategies: await this.encryptionService.getAvailableEncryptionStrategies(),
9094
fixedDatabaseId: REDIS_STACK_CONFIG?.id,
95+
packageType: ServerService.getPackageType(SERVER_CONFIG.buildType),
9196
...(await this.featuresConfigService.getControlInfo()),
9297
};
9398
this.logger.log('Succeed to get server info.');
@@ -110,4 +115,47 @@ export class ServerService implements OnApplicationBootstrap {
110115
return AppType.Unknown;
111116
}
112117
}
118+
119+
static getPackageType(buildType: string): PackageType {
120+
if (buildType === BuildType.Electron) {
121+
// Darwin
122+
if (process.platform === 'darwin') {
123+
if (process.env.mas || process['mas']) {
124+
return PackageType.Mas;
125+
}
126+
127+
return PackageType.UnknownDarwin;
128+
}
129+
130+
// Linux
131+
if (process.platform === 'linux') {
132+
if (process.env.APPIMAGE) {
133+
return PackageType.AppImage;
134+
}
135+
136+
if (process.env.SNAP_INSTANCE_NAME || process.env.SNAP_DATA) {
137+
return PackageType.Snap;
138+
}
139+
140+
if (process.env.container) {
141+
return PackageType.Flatpak;
142+
}
143+
144+
return PackageType.UnknownLinux;
145+
}
146+
147+
// Windows
148+
if (process.platform === 'win32') {
149+
if (process.env.windowsStore || process['windowsStore']) {
150+
return PackageType.WindowsStore;
151+
}
152+
153+
return PackageType.UnknownWindows;
154+
}
155+
156+
return PackageType.Unknown;
157+
}
158+
159+
return undefined;
160+
}
113161
}

0 commit comments

Comments
 (0)