Skip to content

Instantly share code, notes, and snippets.

@eddywebs
Created April 14, 2025 20:32
Show Gist options
  • Save eddywebs/ee9db95b37d31cca521d01b5dfe3e881 to your computer and use it in GitHub Desktop.
Save eddywebs/ee9db95b37d31cca521d01b5dfe3e881 to your computer and use it in GitHub Desktop.
urls to csp
/// usage below
List<String> urls = new List<String>{
'https://example1.com',
'https://example2.com',
'https://example3.com'
};
AddTrustedUrls.addUrlsToTrustedSites(urls);
public class AddTrustedUrls {
@AuraEnabled
public static void addUrlsToTrustedSites(List<String> urls) {
if (urls == null || urls.isEmpty()) {
throw new IllegalArgumentException('URL list cannot be null or empty.');
}
List<MetadataService.CspTrustedSite> trustedSites = new List<MetadataService.CspTrustedSite>();
for (String url : urls) {
MetadataService.CspTrustedSite site = new MetadataService.CspTrustedSite();
site.fullName = 'TrustedSite_' + url.hashCode(); // Unique name for the trusted site
site.endpointUrl = url;
site.isActive = true;
site.context = 'ALL'; // Options: ALL, LIGHTNING, VISUALFORCE
trustedSites.add(site);
}
// Call the Metadata API to create the trusted sites
MetadataService.MetadataPort service = createMetadataService();
MetadataService.SaveResult[] results = service.createMetadata(trustedSites);
for (MetadataService.SaveResult result : results) {
if (!result.success) {
throw new MetadataServiceExamples.MetadataServiceException(
'Error adding trusted site: ' + result.errors[0].message
);
}
}
}
private static MetadataService.MetadataPort createMetadataService() {
MetadataService.MetadataPort service = new MetadataService.MetadataPort();
service.SessionHeader = new MetadataService.SessionHeader_element();
service.SessionHeader.sessionId = UserInfo.getSessionId();
return service;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment