Exemplo n.º 1
0
        public static bool SetSidSpeckleRecords(string emailAddress, string serverAddress, IGSAProxy proxy,
                                                List <SidSpeckleRecord> receiverStreamInfo, List <SidSpeckleRecord> senderStreamInfo)
        {
            string key = emailAddress + "&" + serverAddress.Replace(':', '&');
            string res = proxy.GetTopLevelSid();

            List <string[]> sids = Regex.Matches(res, @"(?<={).*?(?=})").Cast <Match>()
                                   .Select(m => m.Value.Split(new char[] { ':' }))
                                   .Where(s => s.Length == 2)
                                   .ToList();

            sids.RemoveAll(S => S[0] == "SpeckleSender&" + key || S[0] == "SpeckleReceiver&" + key || string.IsNullOrEmpty(S[1]));

            List <string> senderList = new List <string>();

            if (senderStreamInfo != null)
            {
                foreach (var si in senderStreamInfo)
                {
                    senderList.AddRange(new[] { si.Bucket, si.StreamId, si.ClientId });
                }
                if (senderList.Count() > 0)
                {
                    sids.Add(new string[] { "SpeckleSender&" + key, string.Join("&", senderList) });
                }
            }

            List <string> receiverList = new List <string>();

            if (receiverStreamInfo != null)
            {
                foreach (var si in receiverStreamInfo)
                {
                    receiverList.AddRange(new[] { si.StreamId, si.Bucket });
                }
                if (receiverList.Count() > 0)
                {
                    sids.Add(new string[] { "SpeckleReceiver&" + key, string.Join("&", receiverList) });
                }
            }

            string sidRecord = "";

            foreach (string[] s in sids)
            {
                sidRecord += "{" + s[0] + ":" + s[1] + "}";
            }

            return(proxy.SetTopLevelSid(sidRecord));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Writes sender and receiver streams associated with the account.
        /// </summary>
        /// <param name="emailAddress">User email address</param>
        /// <param name="serverAddress">Speckle server address</param>
        public static bool SetSpeckleClients(string emailAddress, string serverAddress)
        {
            string key = emailAddress + "&" + serverAddress.Replace(':', '&');
            string res = gsaProxy.GetTopLevelSid();

            List <string[]> sids = Regex.Matches(res, @"(?<={).*?(?=})").Cast <Match>()
                                   .Select(m => m.Value.Split(new char[] { ':' }))
                                   .Where(s => s.Length == 2)
                                   .ToList();

            sids.RemoveAll(S => S[0] == "SpeckleSender&" + key || S[0] == "SpeckleReceiver&" + key || string.IsNullOrEmpty(S[1]));

            List <string> senderList = new List <string>();

            foreach (KeyValuePair <string, Tuple <string, string> > kvp in SenderInfo)
            {
                senderList.Add(kvp.Key);
                senderList.Add(kvp.Value.Item1);
                senderList.Add(kvp.Value.Item2);
            }

            List <string> receiverList = new List <string>();

            foreach (Tuple <string, string> t in ReceiverInfo)
            {
                receiverList.Add(t.Item1);
                receiverList.Add(t.Item2);
            }

            if (senderList.Count() > 0)
            {
                sids.Add(new string[] { "SpeckleSender&" + key, string.Join("&", senderList) });
            }
            if (receiverList.Count() > 0)
            {
                sids.Add(new string[] { "SpeckleReceiver&" + key, string.Join("&", receiverList) });
            }

            string sidRecord = "";

            foreach (string[] s in sids)
            {
                sidRecord += "{" + s[0] + ":" + s[1] + "}";
            }

            return(gsaProxy.SetTopLevelSid(sidRecord));
        }