in src/services/productService.ts [173:234]
public async getUserSubscriptionsWithProductName(userId: string, searchRequest?: SearchQuery): Promise<Page<Subscription>> {
if (!userId) {
throw new Error(`Parameter "userId" not specified.`);
}
if (userId === Constants.integrationUserId) {
return new Page();
}
const skip = searchRequest && searchRequest.skip || 0;
const take = searchRequest && searchRequest.take || Constants.defaultPageSize;
const query = `${userId}/subscriptions?$top=${take}&$skip=${skip}`;
const result = [];
const pageOfSubscriptions = await this.apiClient.get<Page<SubscriptionContract>>(query, [await this.apiClient.getPortalHeader("getUserSubscriptions")]);
const page = new Page<Subscription>();
page.count = pageOfSubscriptions.count;
page.nextLink = pageOfSubscriptions.nextLink;
page.value = result;
if (!pageOfSubscriptions?.value) {
return page;
}
const subscriptions = pageOfSubscriptions.value;
const promises = [];
for (const subscription of subscriptions) {
const subscriptionModel = new Subscription(subscription);
if (subscription.scope.endsWith("/apis")) {
subscriptionModel.productName = "All APIs";
} else
if (subscription.scope.includes("/apis/")) {
const apiName = Utils.getResourceName("apis", subscription.scope);
const apiPromise = this.apiClient
.get<ApiContract>(`/apis/${apiName}`, [Utils.getIsUserResourceHeader(), await this.apiClient.getPortalHeader("getApi")])
.then(api => {
subscriptionModel.productName = `API: ${api.name}`;
}).catch(error => console.log(`Get API error: ${error.message}`));
promises.push(apiPromise);
} else {
const productName = Utils.getResourceName("products", subscription.scope);
const productPromise = this.apiClient
.get<ProductContract>(`/products/${productName}`, [Utils.getIsUserResourceHeader(), await this.apiClient.getPortalHeader("getProduct")])
.then(product => {
subscriptionModel.productName = product.name;
}).catch(error => console.log(`Get product error: ${error.message}`));
promises.push(productPromise);
}
result.push(subscriptionModel);
}
await Promise.all(promises);
return page;
}