public static async Task ConnectToChat()
        {
            pingTimer = new Timer(PingCallback, null, TimeSpan.Zero, TimeSpan.FromSeconds(10));

            while (true)
            {
                var unixTime = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
                ChatRoomData["t"] = $"{unixTime}-0";

                var request = new HttpRequestMessage(HttpMethod.Get, GetQueryString());
                foreach (var pair in ChatHeaders)
                {
                    request.Headers.Add(pair.Key, pair.Value);
                }

                var response = await chatHttpClient.SendAsync(request);

                while (!response.IsSuccessStatusCode)
                {
                    response = await chatHttpClient.SendAsync(request);
                }

                var responseString = await response.Content.ReadAsStringAsync();

                if (responseString.Contains("Session ID unknown"))
                {
                    Tools.Log("Wikia", "Server returned 'session ID unknown'. Reconnecting.");

                    //new Thread(() => { Restart(); }).Start();
                    WikiaDiscordBridge.Restart();

                    break;
                }
                if (responseString.Length > 20)
                {
                    if (responseString.Contains("[\"message\""))
                    {
                        while (responseString[0] != '[')
                        {
                            responseString = responseString.Substring(1);
                        }

                        while (responseString[responseString.Length - 1] != ']')
                        {
                            responseString = responseString.Substring(0, responseString.Length - 1);
                        }

                        dynamic responseObject     = JsonConvert.DeserializeObject(responseString);
                        dynamic responseDataObject = JsonConvert.DeserializeObject(responseObject[1].data.Value);

                        await ChatEvent(responseObject, responseDataObject);
                    }
                }
            }
        }
Example #2
0
        public static void ConnectToChat()
        {
            PingContinuously();

            while (true)
            {
                var unixTime = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
                ChatRoomData["t"] = $"{unixTime}-0";

                var request = new RestRequest("/socket.io/");
                foreach (var pair in ChatRoomData)
                {
                    request.AddParameter(pair.Key, pair.Value);
                }
                foreach (var pair in ChatHeaders)
                {
                    request.AddHeader(pair.Key, pair.Value);
                }

                var response = ChatRestClient.Execute(request);

                if (response.Content.Contains("Session ID unknown"))
                {
                    Console.WriteLine("Server returned 'session ID unknown'. Reconnecting.");

                    //new Thread(() => { Restart(); }).Start();
                    WikiaDiscordBridge.Restart();

                    break;
                }
                else if (response.Content.Length > 20)
                {
                    var responseString = response.Content;

                    if (responseString.Contains("[\"message\""))
                    {
                        while (responseString[0] != '[')
                        {
                            responseString = responseString.Substring(1);
                        }

                        while (responseString[responseString.Length - 1] != ']')
                        {
                            responseString = responseString.Substring(0, responseString.Length - 1);
                        }

                        dynamic responseObject     = JsonConvert.DeserializeObject(responseString);
                        dynamic responseDataObject = JsonConvert.DeserializeObject(responseObject[1].data.Value);

                        ChatEvent(responseObject, responseDataObject);
                    }
                }
            }
        }