Example #1
0
        public static DataSourceSetting MakeInputFile(DataFileType type = DataFileType.csv)
        {
            DataSourceSetting testFile = new DataSourceSetting(".\\TestDir\\");

            testFile.FileType = type;

            return(testFile);
        }
Example #2
0
        public void SetCredentialFolder(string folderName)
        {
            DataSource        dataSource        = new DataSource("Folder", folderName);
            DataSourceSetting dataSourceSetting = new DataSourceSetting("Windows");

            CredentialStore.SetCredential(dataSource, dataSourceSetting, null);

            return;
        }
Example #3
0
        public void SetCredentialFile(string fileName)
        {
            DataSource        dataSource        = new DataSource("File", fileName);
            DataSourceSetting dataSourceSetting = new DataSourceSetting("Windows");

            CredentialStore.SetCredential(dataSource, dataSourceSetting, null);

            return;
        }
        public void SetCredentialWeb(string url)
        {
            DataSource        dataSource        = new DataSource("Web", url);
            DataSourceSetting dataSourceSetting = new DataSourceSetting("Anonymous");

            CredentialStore.SetCredential(dataSource, dataSourceSetting, null);

            return;
        }
Example #5
0
        public void SetCredentialSQL(string path)
        {
            DataSource        dataSource        = new DataSource("SQL", path);
            DataSourceSetting dataSourceSetting = new DataSourceSetting("Windows");

            CredentialStore.SetCredential(dataSource, dataSourceSetting, null);

            return;
        }
        public void SetCredentialOData(string url, string userName, string password)
        {
            DataSource dataSource = new DataSource("OData", url);

            if (userName == null)
            {
                DataSourceSetting dataSourceSetting = new DataSourceSetting("Anonymous");
                CredentialStore.SetCredential(dataSource, dataSourceSetting, null);
            }
            else
            {
                var dataSourceSetting = DataSourceSetting.CreateUsernamePasswordCredential(userName, password);
                CredentialStore.SetCredential(dataSource, dataSourceSetting, null);
            }

            return;
        }
        public void SetCredentialSQL(string sql, string userName, string password)
        {
            DataSource dataSource = new DataSource("SQL", sql);

            if (userName == null)
            {
                DataSourceSetting dataSourceSetting = new DataSourceSetting("Windows");
                CredentialStore.SetCredential(dataSource, dataSourceSetting, null);
            }
            else
            {
                var dataSourceSetting = DataSourceSetting.CreateUsernamePasswordCredential(userName, password);
                CredentialStore.SetCredential(dataSource, dataSourceSetting, null);
            }

            return;
        }
Example #8
0
            public (bool success, DataSourceSetting) UserAAD(DataSource dataSource)
            {
                var oauthProvider = dataSource.GetOAuthProvider(new OAuthClientApplication("a672d62c-fc7b-4e81-a576-e60dc46e951d", "", "https://de-users-preview.sqlazurelabs.com/account/reply/"));
                var startLogin    = oauthProvider.StartLogin(activityId, "");

                (bool success, DataSourceSetting auth)result = (false, null);
                (Form window, WebBrowser authPage)           = AuthProvider(startLogin);
                using (window)
                    using (authPage)
                    {
                        Uri callbackUri     = null;
                        var pageNavListener = AuthPage_Navigated((uri) => { callbackUri = uri; });
                        WebBrowserNavigatedEventHandler AuthPage_Navigated(Action <Uri> redirectUri)
                        {
                            void Navigated(object sender, WebBrowserNavigatedEventArgs navEvent)
                            {
                                if (navEvent.Url.AbsoluteUri.StartsWith(startLogin.CallbackUri.AbsoluteUri, StringComparison.Ordinal))
                                {
                                    redirectUri(navEvent.Url);
                                    authPage.Navigated -= Navigated;
                                    window.Close();
                                }
                            };
                            return(Navigated);
                        }

                        authPage.Navigated += pageNavListener;
                        window.ShowDialog();
                        authPage.Navigated -= pageNavListener;
                        if (callbackUri != null)
                        {
                            var creds = oauthProvider.FinishLogin(startLogin.SerializedContext, callbackUri, activityId);
                            result = (true, DataSourceSetting.CreateOAuth2Credential(creds.AccessToken));
                        }
                        else
                        {
                            result = (false, null);
                        }
                    }
                return(result);
            }
Example #9
0
        static void Main(string[] args)
        {
            Authentication authentication = new Authentication();

            //Load additional data connctors like Kusto
            MashupLibraryProvider mp = MashupLibraryProvider.Assembly(new AssemblyName("PowerBIExtensions"));

            MashupLibraryProvider.SetProviders(mp);

            string     code  = File.ReadAllText(args[0]);
            PQDocument pqDoc = new PQDocument(code);

            PrintQueries(pqDoc);
            Console.Write("Select Query:");
            string queryName = Console.ReadLine();

            var queryParameters = pqDoc.Parameters;
            List <NamedExpression> parameterReplacements = new List <NamedExpression>();

            foreach (var queryParameter in queryParameters)
            {
                object defaultQueryValue = queryParameter.DefaultValue;
                Console.Write($"{queryParameter.Name} ({queryParameter.DefaultValue ?? "null"}):");
                string newQueryParameter = Console.ReadLine();
                if (newQueryParameter != "")
                {
                    parameterReplacements.Add(new NamedExpression(queryParameter.Name, PQLiteral.FromInput(queryParameter.Type, newQueryParameter).Code));
                }
            }
            pqDoc = pqDoc.UpdateExpressions(parameterReplacements);
            //Engine
            MashupConnectionStringBuilder connectionString = new MashupConnectionStringBuilder()
            {
                //Choose either Mashup or Package
                Mashup = pqDoc.Code, //Full document, like when a pq is extracted from a pbit

                //Package = MashupPackage.ToBase64String(queryName, "#shared"), //Single expression, as seen in Advanced view

                //Query to evaluate
                Location = queryName,
            };
            MashupConnection     connection  = new MashupConnection(connectionString.ToString());
            QueryExecutionStatus queryStatus = QueryExecutionStatus.NotStarted;
            Action            authUpdateTask = null;
            object            authUpdateLock = new object();
            DataSourceSetting ds             = null;

            connection.DataSourceSettingNeeded += (missingAuthSender, e) =>
            {
                authUpdateTask = () =>
                {
                    Guid activityId = Guid.NewGuid();
                    Console.WriteLine(e.Details);
                    foreach (var dataSource in e.Details.DataSources)
                    {
                        DataSourceSetting dataSourceSetting;
                        if (dataSource.TryFindBestMatch(e.NewSettings.Keys, out var matchingDataSource))
                        {
                            dataSourceSetting = e.NewSettings[matchingDataSource];
                        }
                        else
                        {
                            bool success;
                            queryStatus = QueryExecutionStatus.AwaitingUserAuthentication;
                            (success, dataSourceSetting) = authentication.UserAAD(dataSource);
                            if (!success)
                            {
                                queryStatus = QueryExecutionStatus.Failed;
                                break;
                            }
                        }
                        e.NewSettings[dataSource] = dataSourceSetting;
                        ds = dataSourceSetting;
                    }
                    queryStatus = QueryExecutionStatus.RetryPending;
                };
                lock (authUpdateLock)
                {
                    queryStatus = QueryExecutionStatus.AuthenticationNeeded;
                    Monitor.PulseAll(authUpdateLock);
                    while (queryStatus == QueryExecutionStatus.AuthenticationNeeded)
                    {
                        Monitor.Wait(authUpdateLock);
                    }
                }
            };

            connection.Open();
            MashupCommand cmd = connection.CreateCommand();

            cmd.MashupCommandTextDialect = MashupCommandTextDialect.M;
            cmd.CommandText = connectionString.Location;
            cmd.CommandType = System.Data.CommandType.TableDirect;
            new Thread(() =>
            {
                while (queryStatus != QueryExecutionStatus.Complete)
                {
                    try
                    {
                        lock (authUpdateLock)
                        {
                            queryStatus = QueryExecutionStatus.Running;
                            Monitor.PulseAll(authUpdateLock);
                        }
                        using (var reader = cmd.ExecuteReader(CommandBehavior.Default, MashupCommandBehavior.Default))
                        {
                            lock (authUpdateLock)
                            {
                                queryStatus = QueryExecutionStatus.Serializing;
                                Monitor.PulseAll(authUpdateLock);
                            }
                            object[] rowValues = new object[reader.VisibleFieldCount];
                            while (reader.Read())
                            {
                                reader.GetValues(rowValues);
                                Console.WriteLine(string.Join(", ", rowValues));
                            }
                        }
                        lock (authUpdateLock)
                        {
                            queryStatus = QueryExecutionStatus.Complete;
                            Monitor.PulseAll(authUpdateLock);
                        }
                    }
                    catch (MashupCredentialException)
                    {
                        queryStatus = QueryExecutionStatus.NotStarted;
                    }
                    catch (MashupValueException)
                    {
                        queryStatus = QueryExecutionStatus.NotStarted;
                    }
                }
            }).Start();
            lock (authUpdateLock)
            {
                while (queryStatus != QueryExecutionStatus.Complete && queryStatus != QueryExecutionStatus.Failed && queryStatus != QueryExecutionStatus.RetryReady)
                {
                    if (queryStatus == QueryExecutionStatus.AuthenticationNeeded)
                    {
                        authUpdateTask();
                        Monitor.PulseAll(authUpdateLock);
                    }
                    else
                    {
                        Monitor.Wait(authUpdateLock);
                    }
                }
            }
        }
Example #10
0
 public DataSourceSettingViewModel()
 {
     _model             = new DataSourceSetting();
     BrowseInputFileDir = new RelayCommand(_browseInputFile);
 }