Пример #1
0
 public QlikApp(string appName, string connectUri, IQlikCredentials credentials)
 {
     if (String.IsNullOrEmpty(connectUri) || connectUri == "Qlik Sense Desktop")
     {
         //Qlik Sense Desktop
         AppName            = appName;
         AppUri             = new Uri("ws://127.0.0.1:4848");
         IsServerConnection = false;
     }
     else
     {
         //Qlik Sense Server
         var resultValue = Guid.TryParse(appName, out var result) ? (Guid?)result : null;
         if (resultValue == null)
         {
             AppName = appName;
         }
         else
         {
             AppId = resultValue.Value;
         }
         AppUri             = new Uri(connectUri);
         IsServerConnection = true;
     }
     Credentials = credentials;
     Sessions    = new List <QlikAppSession>();
 }
Пример #2
0
 public bool Reconnect(IQlikCredentials credentials, bool createDefaultSession = false)
 {
     Credentials = credentials;
     return(Connect(createDefaultSession));
 }
        public static QlikApp GetQlikInstance(ConnectorParameter parameter, string appId = null)
        {
            try
            {
                IQlikCredentials qlikAuth = null;
                var connectUri            = "Qlik Sense Desktop";
                if (!parameter.UseDesktop)
                {
                    connectUri = $"https://{parameter.ConnectUri}";
                    var session = GetVaildSession(parameter.UserName);
                    if (ValidateWinCredentials(parameter.UserName, parameter.Password))
                    {
                        connectUri = $"wss://{parameter.ConnectUri}:4747";
                        qlikAuth   = new CertificateAuth(parameter.UserName, Environment.UserDomainName);
                    }
                    else if (session != null)
                    {
                        qlikAuth = new SessionAuth(session.Id);
                    }
                    else
                    {
                        qlikAuth = new WindowsAuth(parameter.UserName, parameter.Password);
                    }
                }

                activeApp = new QlikApp(appId, connectUri, qlikAuth);
                if (appId != null && activeApp.Connect())
                {
                    var session = sessionMem.FirstOrDefault(s => s.UserName == parameter.UserName) ?? null;
                    if (session == null)
                    {
                        sessionMem.Add(new SessionMemory()
                        {
                            UserName = parameter.UserName,
                            Id       = activeApp.FirstSession.SessionId,
                            Stamp    = DateTime.Now,
                        });
                    }
                    else
                    {
                        session.Id    = activeApp.FirstSession.SessionId;
                        session.Stamp = DateTime.Now;
                        var index = sessionMem.IndexOf(session);
                        sessionMem[index] = session;
                    }
                }
                else
                {
                    if (!String.IsNullOrEmpty(appId))
                    {
                        throw new Exception($"No connection with app {appId}");
                    }
                }

                return(activeApp);
            }
            catch (Exception ex)
            {
                logger.Error(ex, "app connection failed");
                return(null);
            }
        }