private async Task <bool> CallServiceApiAsync(string serviceInterfaceName, Func <dynamic, bool> action) { if (!IsViewerExtensionInstalled || (IsViewerExtensionLoaded && LoadViewerExtension() == null)) { return(false); } // Get the service interface type Type[] types = ViewerExtensionAssembly.GetTypes(); Type serviceType = types.Where(t => t.Name == serviceInterfaceName).FirstOrDefault(); if (serviceType == default(Type)) { return(false); } // Get a service reference dynamic serviceInterface = await ServiceProvider.GetGlobalServiceAsync(serviceType); if (serviceInterface == null) { return(false); } return(action(serviceInterface)); }
/// <summary> /// Opens the specified SARIF log file in the SARIF Viewer extension. /// </summary> /// <param name="path">The path of the log file.</param> public async Task <bool> OpenSarifLogAsync(string path) { if (string.IsNullOrWhiteSpace(path)) { throw new ArgumentNullException(nameof(path)); } bool result = false; if (IsViewerExtensionInstalled && (IsViewerExtensionLoaded || LoadViewerExtension() != null)) { // Get the service interface type Type[] types = ViewerExtensionAssembly.GetTypes(); Type sarifLoadServiceInterface = types.Where(t => t.Name == ViewerServiceInterfaceName).FirstOrDefault(); if (sarifLoadServiceInterface != null) { // Get a service reference dynamic sarifLoadService = await ServiceProvider.GetGlobalServiceAsync(sarifLoadServiceInterface); if (sarifLoadService != null) { // Call the service API sarifLoadService.LoadSarifLog(path); result = true; } } } return(result); }