Skip to content

Commit 24ef515

Browse files
nvs119addaleax
andauthored
fix(my-queries): stop using hardcoded urls for user data COMPASS-9663 (#7392)
* stop using hardcoded urls * https * make my-queries have dependency on atlas-service * url-safe characters Co-authored-by: Anna Henningsen <[email protected]> * simplify --------- Co-authored-by: Anna Henningsen <[email protected]>
1 parent d08e7ba commit 24ef515

File tree

5 files changed

+51
-7
lines changed

5 files changed

+51
-7
lines changed

packages/atlas-service/src/atlas-service.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ const ATLAS_CONFIG = {
1616
},
1717
authPortalUrl: 'http://example.com/account/login',
1818
assistantApiBaseUrl: 'http://example.com/assistant',
19+
userDataBaseUrl: 'http://example.com/ui/userData',
1920
};
2021

2122
function getAtlasService(

packages/atlas-service/src/atlas-service.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,21 @@ export class AtlasService {
7878
// https://github.com/10gen/mms/blob/9f858bb987aac6aa80acfb86492dd74c89cbb862/client/packages/project/common/ajaxPrefilter.ts#L34-L49
7979
return this.cloudEndpoint(path);
8080
}
81-
// TODO (COMPASS-9663): these should come from the config property per environment
82-
userDataEndpoint(path?: string): string {
83-
return `https://cluster-connection.cloud-dev.mongodb.com/userData${normalizePath(
84-
path
85-
)}`;
81+
userDataEndpoint(
82+
orgId: string,
83+
groupId: string,
84+
type: 'favoriteQueries' | 'recentQueries' | 'favoriteAggregations',
85+
id?: string
86+
): string {
87+
const encodedOrgId = encodeURIComponent(orgId);
88+
const encodedGroupId = encodeURIComponent(groupId);
89+
const encodedType = encodeURIComponent(type);
90+
const encodedId = id ? encodeURIComponent(id) : '';
91+
const baseUrl = this.config.userDataBaseUrl;
92+
const path = encodedId
93+
? `/${encodedOrgId}/${encodedGroupId}/${encodedType}/${encodedId}`
94+
: `/${encodedOrgId}/${encodedGroupId}/${encodedType}`;
95+
return `${baseUrl}${path}`;
8696
}
8797
driverProxyEndpoint(path?: string): string {
8898
return `${this.config.ccsBaseUrl}${normalizePath(path)}`;

packages/atlas-service/src/main.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ describe('CompassAuthServiceMain', function () {
5757
},
5858
authPortalUrl: 'http://example.com',
5959
assistantApiBaseUrl: 'http://example.com/assistant',
60+
userDataBaseUrl: 'http://example.com/ui/userData',
6061
};
6162

6263
const fetch = CompassAuthService['fetch'];

packages/atlas-service/src/util.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@ export type AtlasServiceConfig = {
120120
* Assistant API base url
121121
*/
122122
assistantApiBaseUrl: string;
123+
/**
124+
* User data API base url
125+
*/
126+
userDataBaseUrl: string;
123127
};
124128

125129
/**
@@ -144,6 +148,7 @@ const config = {
144148
},
145149
authPortalUrl: 'https://account-dev.mongodb.com/account/login',
146150
assistantApiBaseUrl: 'https://knowledge-dev.mongodb.com/api/v1',
151+
userDataBaseUrl: 'https://cloud-dev.mongodb.com/ui/userData',
147152
},
148153
'atlas-dev': {
149154
ccsBaseUrl: '',
@@ -155,6 +160,7 @@ const config = {
155160
},
156161
authPortalUrl: 'https://account-dev.mongodb.com/account/login',
157162
assistantApiBaseUrl: 'https://knowledge-dev.mongodb.com/api/v1',
163+
userDataBaseUrl: 'https://cloud-dev.mongodb.com/ui/userData',
158164
},
159165
'atlas-qa': {
160166
ccsBaseUrl: '',
@@ -166,6 +172,7 @@ const config = {
166172
},
167173
authPortalUrl: 'https://account-qa.mongodb.com/account/login',
168174
assistantApiBaseUrl: 'https://knowledge-dev.mongodb.com/api/v1',
175+
userDataBaseUrl: 'https://cloud-qa.mongodb.com/ui/userData',
169176
},
170177
atlas: {
171178
ccsBaseUrl: '',
@@ -177,6 +184,7 @@ const config = {
177184
},
178185
authPortalUrl: 'https://account.mongodb.com/account/login',
179186
assistantApiBaseUrl: 'https://knowledge.mongodb.com/api/v1',
187+
userDataBaseUrl: 'https://cloud.mongodb.com/ui/userData',
180188
},
181189
'web-sandbox-atlas-local': {
182190
ccsBaseUrl: '/ccs',
@@ -188,6 +196,7 @@ const config = {
188196
},
189197
authPortalUrl: 'https://account-dev.mongodb.com/account/login',
190198
assistantApiBaseUrl: 'https://knowledge-dev.mongodb.com/api/v1',
199+
userDataBaseUrl: 'https://cloud-dev.mongodb.com/ui/userData',
191200
},
192201
'web-sandbox-atlas-dev': {
193202
ccsBaseUrl: '/ccs',
@@ -199,6 +208,7 @@ const config = {
199208
},
200209
authPortalUrl: 'https://account-dev.mongodb.com/account/login',
201210
assistantApiBaseUrl: 'https://knowledge-dev.mongodb.com/api/v1',
211+
userDataBaseUrl: '/cloud-mongodb-com/ui/userData',
202212
},
203213
'web-sandbox-atlas-qa': {
204214
ccsBaseUrl: '/ccs',
@@ -210,6 +220,7 @@ const config = {
210220
},
211221
authPortalUrl: 'https://account-dev.mongodb.com/account/login',
212222
assistantApiBaseUrl: 'https://knowledge-dev.mongodb.com/api/v1',
223+
userDataBaseUrl: '/cloud-mongodb-com/ui/userData',
213224
},
214225
'web-sandbox-atlas': {
215226
ccsBaseUrl: '/ccs',
@@ -221,6 +232,7 @@ const config = {
221232
},
222233
authPortalUrl: 'https://account.mongodb.com/account/login',
223234
assistantApiBaseUrl: 'https://knowledge.mongodb.com/api/v1',
235+
userDataBaseUrl: '/cloud-mongodb-com/ui/userData',
224236
},
225237
} as const;
226238

@@ -236,6 +248,7 @@ export function getAtlasConfig(
236248
},
237249
authPortalUrl: process.env.COMPASS_ATLAS_AUTH_PORTAL_URL_OVERRIDE,
238250
assistantApiBaseUrl: process.env.COMPASS_ASSISTANT_BASE_URL_OVERRIDE,
251+
userDataBaseUrl: process.env.COMPASS_USER_DATA_BASE_URL_OVERRIDE,
239252
};
240253
return defaultsDeep(
241254
envConfig,

packages/compass-web/src/entrypoint.tsx

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,27 @@ const WithStorageProviders = createServiceProvider(
117117
const atlasService = atlasServiceLocator();
118118
const authenticatedFetch =
119119
atlasService.authenticatedFetch.bind(atlasService);
120-
const getResourceUrl = (path?: string) =>
121-
atlasService.userDataEndpoint(`/${path || ''}`);
120+
const getResourceUrl = (path?: string) => {
121+
const pathParts = path?.split('/').filter(Boolean) || [];
122+
const type = pathParts[0] as
123+
| 'favoriteQueries'
124+
| 'recentQueries'
125+
| 'favoriteAggregations';
126+
const pathOrgId = pathParts[1];
127+
const pathProjectId = pathParts[2];
128+
const id = pathParts[3];
129+
130+
// Use the path's orgId and projectId if provided, otherwise fall back to the context values
131+
const finalOrgId = pathOrgId || orgId;
132+
const finalProjectId = pathProjectId || projectId;
133+
134+
return atlasService.userDataEndpoint(
135+
finalOrgId,
136+
finalProjectId,
137+
type,
138+
id
139+
);
140+
};
122141

123142
const pipelineStorage = useRef<PipelineStorageAccess>({
124143
getStorage() {

0 commit comments

Comments
 (0)