// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using Azure.Core;
using Azure.ResourceManager.CognitiveServices;
using Azure.ResourceManager.CognitiveServices.Models;
using Microsoft.Extensions.Logging;
namespace AzureMcp.Quota.Services.Util;
public class CognitiveServicesUsageChecker(TokenCredential credential, string subscriptionId, ILogger<CognitiveServicesUsageChecker> logger) : AzureUsageChecker(credential, subscriptionId, logger)
{
public override async Task<List<UsageInfo>> GetUsageForLocationAsync(string location)
{
try
{
var subscription = ResourceClient.GetSubscriptionResource(new ResourceIdentifier($"/subscriptions/{SubscriptionId}"));
var usages = subscription.GetUsagesAsync(location);
var result = new List<UsageInfo>();
await foreach (ServiceAccountUsage item in usages)
{
result.Add(new UsageInfo(
Name: item.Name?.LocalizedValue ?? item.Name?.Value ?? string.Empty,
Limit: (int)(item.Limit ?? 0),
Used: (int)(item.CurrentValue ?? 0),
Unit: item.Unit.ToString(),
Description: null
));
}
return result;
}
catch (Exception error)
{
throw new InvalidOperationException("Failed to fetch Cognitive Services quotas. Please check your subscription permissions and service availability.", error);
}
}
}