Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 1,483 Bytes
b3c3418 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
export interface OrganizationInfo {
name: string;
displayName: string;
avatar?: string;
isValid: boolean;
}
const orgCache = new Map<string, OrganizationInfo>();
export async function validateOrganization(orgName: string): Promise<OrganizationInfo> {
if (!orgName.trim()) {
return {
name: "",
displayName: "Personal Account",
isValid: false,
};
}
// Check cache first
if (orgCache.has(orgName)) {
return orgCache.get(orgName)!;
}
try {
const response = await fetch(`https://huggingface.co/api/organizations/${orgName}/overview`);
if (response.ok) {
const data = await response.json();
const orgInfo: OrganizationInfo = {
name: orgName,
displayName: data.displayName || orgName,
avatar: data.avatar || `https://huggingface.co/api/organizations/${orgName}/avatar`,
isValid: true,
};
// Cache the result
orgCache.set(orgName, orgInfo);
return orgInfo;
} else {
const orgInfo: OrganizationInfo = {
name: orgName,
displayName: orgName,
isValid: false,
};
// Cache invalid result for a short time
orgCache.set(orgName, orgInfo);
return orgInfo;
}
} catch (error) {
console.warn(`Failed to validate organization ${orgName}:`, error);
const orgInfo: OrganizationInfo = {
name: orgName,
displayName: orgName,
isValid: false,
};
// Cache error result
orgCache.set(orgName, orgInfo);
return orgInfo;
}
}
export function clearOrganizationCache() {
orgCache.clear();
}
|