示例#1
0
    public override void OnPlayerListChange(Server server, List <Player> players)
    {
        var packet = new ServerInfoPacketType()
        {
            ServerId = server.ServerId.ToString(),
            Players  = players.Where(p => p != null && p.ClientId != 0 && p.NickId != null)
                       .Select(p => new PlayerPacketType()
            {
                NickId    = p.NickId.ToString(),
                CountryId = p.Country?.Id ?? 0,
                Ping      = p.Ping,
                Status    = p.Status.ToString(),
            })
                       .ToArray()
        };
        var json = Json.Serialize(packet);

        using (var webClient = new WebClientBase()) {
            webClient.Timeout     = 9000;
            webClient.ContentType = ContentType.JsonUTF8;
            webClient.KeepAlive   = false;
            webClient.SetCookie("srvtoken", this.Token, DOMAIN);
            webClient.Upload(PLAYERURL, json);
        }
    }
示例#2
0
        public static T DeserializeUrl <T>(string url) where T : class
        {
            using (WebClientBase wc = new WebClientBase())
                using (Stream stream = wc.DownloadToStream(url))
                {
                    if (stream == null)
                    {
                        return(null);
                    }

                    using (StreamReader streamReader = new StreamReader(stream))
                        using (JsonReader reader = new JsonTextReader(streamReader))
                        {
                            JsonSerializer serializer = new JsonSerializer();
                            try
                            {
                                return(serializer.Deserialize <T>(reader));
                            }
                            catch
                            {
                                Log.WriteError("Deserializing of {0} from url {1} failed", typeof(T).ToString(), url);
                                return(null);
                            }
                        }
                }
        }
示例#3
0
        public void GZipBytesTest()
        {
            var webClient    = new WebClientBase();
            var compressed   = webClient.GZipBytes("test");
            var decompressed = webClient.GUnzip(compressed);

            Assert.IsTrue("test" == decompressed);
        }
示例#4
0
        private static string getHelpPage(string helpFileName)
        {
            var    client      = new WebClientBase();
            string name        = Path.GetFileNameWithoutExtension(helpFileName);
            var    pageContent = client.DownloadString("https://github.com/NikolayXHD/Mtgdb/wiki/" + name);

            return(pageContent);
        }
示例#5
0
 public void GetStreamId()
 {
     using (WebClientBase webClient = new WebClientBase())
     {
         var channelPage = webClient.Download(String.Format("http://sc2tv.ru/channel/{0}", ChannelName.Replace("#", "")));
         channelId = Re.GetSubString(channelPage, @"channelId=(\d+)");
     }
 }
示例#6
0
        public void SendDataToServer(object sender)
        {
            var obj = sender as GlobalStatistics;

            if (obj == null)
            {
                return;
            }

            lock (obj.lockSend)
            {
                string result = "FAIL";
                if (String.IsNullOrWhiteSpace(obj.lastPacket))
                {
                    obj.lastPacket = GetNextPacket();
                }

                if (String.IsNullOrWhiteSpace(obj.lastPacket))
                {
                    return;
                }


                using (WebClientBase webClient = new WebClientBase())
                {
                    var data = webClient.GZipBytes(obj.lastPacket);
                    webClient.Timeout     = 59000;
                    webClient.ContentType = ContentType.JsonUTF8;
                    webClient.KeepAlive   = false;
                    webClient.SetCookie("srvtoken", Token, DOMAIN);
                    result = webClient.UploadCompressed(EVENTURL, obj.lastPacket);
                    if (!String.IsNullOrWhiteSpace(result))
                    {
                        if (result.Equals("OK", StringComparison.InvariantCultureIgnoreCase))
                        {
                            if (!obj.firstPacketSent)
                            {
                                obj.firstPacketSent = true;
                                Log.WriteInfo("Successfuly connected to il2.info");
                            }
                            obj.lastPacket = String.Empty;
                        }
                        else
                        {
                            Log.WriteInfo("Send result: {0}", result);
                        }
                    }
                    else
                    {
                        Log.WriteInfo("Send result: FAIL (HTTP error)");
                    }
                }
            }
        }
示例#7
0
    public Sc2TvChat(ChatConfig config)
        : base(config)
    {
        EmoticonUrl         = "http://chat.sc2tv.ru/js/smiles.js";
        EmoticonFallbackUrl = AppDomain.CurrentDomain.GetData("DataDirectory") + @"\Scripts\Example\Sc2TvSmilesFallback.js";

        CreateChannel = () => { return(new Sc2TvChannel(this)); };

        ReceiveOwnMessages = false;

        ContentParsers.Add(MessageParser.RemoveBBCode);
        ContentParsers.Add(MessageParser.UnescapeHtml);
        ContentParsers.Add(MessageParser.ParseURLs);
        ContentParsers.Add(MessageParser.ParseEmoticons);

        LoginWebClient = new WebClientBase();
    }
示例#8
0
        private static string getOnlineHelpContent(string helpFileName)
        {
            var    client = new WebClientBase();
            string name   = Path.GetFileNameWithoutExtension(helpFileName);

            var pageContent = client.DownloadString("https://github.com/NikolayXHD/Mtgdb/wiki/" + name);

            var startIndex    = pageContent.IndexOf(HelpContentOpenElement, Str.Comparison);
            var contentPrefix = pageContent.Substring(startIndex);

            var openers = new Regex("<div").Matches(contentPrefix);
            var closers = new Regex("</div>").Matches(contentPrefix);

            var tags = openers.Cast <Match>()
                       .Select(m => new { index = m.Index, length = m.Length, open = true })
                       .Concat(closers.Cast <Match>().Select(m => new { index = m.Index, length = m.Length, open = false }))
                       .OrderBy(_ => _.index)
                       .ToArray();

            int c = 0;

            for (int i = 0; i < tags.Length; i++)
            {
                if (tags[i].open)
                {
                    c++;
                }
                else
                {
                    c--;
                }

                if (c == 0)
                {
                    return(contentPrefix.Substring(0, tags[i].index + tags[i].length));
                }
            }

            throw new FormatException();
        }
        private async void CheckUpdates()
        {
            using (WebClientBase webClient = new WebClientBase())
            {
                int currentVersion = 0;
                Log.WriteInfo("OBSPlugin: Downloading current version info");

                var content = webClient.Download("http://www.xedocproject.com/apps/ubiquitous2obs/ub2plugin.ver");


                if (content != null)
                {
                    content = Re.GetSubString(content, @"(\d+)");

                    int.TryParse(content, out currentVersion);

                    Log.WriteInfo("OBSPlugin: current version number is {0}", currentVersion);
                    bool   isError      = false;
                    string saveFileName = Path.GetTempPath() + @"Ubiquitous2PluginInstaller.exe";
                    if (currentVersion > VERSION)
                    {
                        try
                        {
                            if (File.Exists(saveFileName))
                            {
                                File.Delete(saveFileName);
                            }
                        }
                        catch (Exception e)
                        {
                            isError = true;
                            Log.WriteError("OBSPlugin: error deleting old installer {0}", e.Message);
                        }

                        await Task.Run(() =>
                        {
                            try
                            {
                                webClient.DownloadFile(@"http://www.xedocproject.com/apps/ubiquitous2obs/Ubiquitous2PluginInstaller.exe",
                                                       Path.GetTempPath() + @"Ubiquitous2PluginInstaller.exe");
                            }
                            catch (Exception e) {
                                isError = true;
                                Log.WriteError("OBSPlugin: Error downloading update {0}", e.Message);
                            }
                        });

                        if (!isError)
                        {
                            var result = MessageBox.Show("New version of Ubiquitous2 plugin is available. Install it now ?", "New Ubiquitous2 plugin", MessageBoxButtons.YesNo);
                            if (result == DialogResult.No)
                            {
                                return;
                            }
                            var installDir = AssemblyDirectory.Replace(@"plugins\CLRHostPlugin", "");

                            ProcessStartInfo startInfo = new ProcessStartInfo(saveFileName, string.Format("\"{0}\"", installDir));
                            Process.Start(startInfo);
                        }
                    }
                }
                else
                {
                    Log.WriteError("OBSPlugin: couldn't get current plugin version");
                }
            }
        }