fetchProfileInfo function

Future<({String? accountCreatedAt, String? billingType, String? displayName, bool? hasExtraUsageEnabled, RateLimitTier? rateLimitTier, OAuthProfileResponse? rawProfile, String? subscriptionCreatedAt, SubscriptionType? subscriptionType})?> fetchProfileInfo({
  1. required String accessToken,
  2. HttpClient? httpClient,
})

Fetch profile info and extract subscription details.

Implementation

Future<
  ({
    SubscriptionType? subscriptionType,
    String? displayName,
    RateLimitTier? rateLimitTier,
    bool? hasExtraUsageEnabled,
    String? billingType,
    String? accountCreatedAt,
    String? subscriptionCreatedAt,
    OAuthProfileResponse? rawProfile,
  })?
>
fetchProfileInfo({required String accessToken, HttpClient? httpClient}) async {
  final profile = await fetchOAuthProfile(
    accessToken: accessToken,
    httpClient: httpClient,
  );
  if (profile == null) return null;

  final orgType = profile.organization.organizationType;
  final subscriptionType = subscriptionTypeFromOrgType(orgType);

  return (
    subscriptionType: subscriptionType,
    displayName: profile.account.displayName,
    rateLimitTier: profile.organization.rateLimitTier,
    hasExtraUsageEnabled: profile.organization.hasExtraUsageEnabled,
    billingType: profile.organization.billingType,
    accountCreatedAt: profile.account.createdAt,
    subscriptionCreatedAt: profile.organization.subscriptionCreatedAt,
    rawProfile: profile,
  );
}