Помогите сделать c# сниппет из 4 кубиков

gashasty

Client
Регистрация
28.02.2019
Сообщения
22
Благодарностей
3
Баллы
3
Есть шаблон, необходимо реализовать 4 выделенных кубика в сниппет c#. То есть получение строки из списка с удалением, отправка пост запроса, получение ответа, regex и действия по результатам regex.
upload_2019-9-2_9-7-47.png


Реализовал вот так, но если регулярное выражение совпадает то все норм, если НЕ совпадает, то выдает ошибку и не устанавливает значение переменной как пустое.
Код:
var maillist = project.Lists["почты"];
var good = project.Lists["good"];
var bad = project.Lists["bad"];
project.Variables["mail"].Value = maillist[0];
maillist.RemoveAt(0);

string request = ZennoPoster.HttpPost("https://www.bravica.net/ru//data.php",
    "name=email&cmd="+project.Variables["mail"].Value,
    "application/x-www-form-urlencoded", "", "utf-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody);
project.Variables["post"].Value = request;

string pattern = @"Успешное\ соединение.*</span>\ с\ mx\.yandex\.ru\.";
Regex regex = new Regex(pattern);
var result = regex.Match(project.Variables["post"].Value);
if(result.ToString() == "Успешное соединение</span> с mx.yandex.ru."){
return "Совпадение есть";
}
else {
throw new Exception("Совпадения нет");
}
Подскажите как это можно исправить или реализовать по-другому
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113

gashasty

Client
Регистрация
28.02.2019
Сообщения
22
Благодарностей
3
Баллы
3
  • Спасибо
Реакции: Dorian_Gray

ZComand

Client
Регистрация
02.02.2016
Сообщения
57
Благодарностей
63
Баллы
18
C#:
var maillist = project.Lists["почты"];
            var good = project.Lists["good"];
            var bad = project.Lists["bad"];
            lock (FileSyncObjects.ListSyncer)//если собираетесь работать во многоптоке, нужно блокировать операции со списками, чтоб в разные потоки не попадали одинаковые данные
                project.Variables["mail"].Value = maillist.GetItem("0", true); // заменил ваш код. Так правильнее
            //вы использовали устаревший метод, сейчас нужно отправлять запросы так:
            string request = ZennoPoster.HTTP.Request(ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.POST, "https://www.bravica.net/ru//data.php",
                "name=email&cmd=" + project.Variables["mail"].Value,
                "application/x-www-form-urlencoded", "", "utf-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody);
            project.Variables["post"].Value = request;

            string pattern = @"Успешное\ соединение.*</span>\ с\ mx\.yandex\.ru\.";
            Regex regex = new Regex(pattern);
           
            if (regex.IsMatch(project.Variables["post"].Value)) // заменил вашу проверку на стандартную
            {
                return "Совпадение есть";
            }
            else
            {
                //throw new Exception("Совпадения нет"); тут ошибка, этот код всегда будет завершать ваш снипет с ошибкой по красной ветке
                return ""; //Вам нужно сделать так
            }
Если я правильно понял задачу :-)
 

webmasterfree

Client
Регистрация
03.02.2019
Сообщения
116
Благодарностей
17
Баллы
18
Мне тоже всегда было интересно - можно ли преобразовать несколько кубиков в C# код именно функцией в самой зенке (не в ручную писать код)? А то порой приходится перетаскивать всю кабалу кубиков для похожих действий в одном шаблоне.
 

Кличко

Пользователь
Регистрация
22.03.2019
Сообщения
103
Благодарностей
5
Баллы
18
Ору, зачем менять 4 кубика на код шарпа? Мучится с решетом - это того не стоит...
 

gashasty

Client
Регистрация
28.02.2019
Сообщения
22
Благодарностей
3
Баллы
3

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 371
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)