Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        /// <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);
        }