mirror of
https://github.com/alei1180/curlone.git
synced 2025-11-24 22:53:34 +02:00
refactor(web): Отправка запроса через JS XHR объект
This commit is contained in:
@@ -57,7 +57,7 @@
|
||||
color: #777;
|
||||
}
|
||||
|
||||
input[type=submit] {
|
||||
input[type=button] {
|
||||
background-color: black;
|
||||
color: white;
|
||||
padding: 10px 10px;
|
||||
@@ -75,6 +75,27 @@
|
||||
align-items: center;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
function convert(){
|
||||
let formData = new FormData(document.forms.curl);
|
||||
let command = formData.get("command")
|
||||
|
||||
let req = new XMLHttpRequest();
|
||||
req.onload = convertOnload;
|
||||
req.responseType = "json";
|
||||
req.open("GET", "/convert?cmd=" + encodeURIComponent(command));
|
||||
req.send();
|
||||
}
|
||||
|
||||
function convertOnload() {
|
||||
let output = document.getElementById("output");
|
||||
if(xmlhttp.status === 200){
|
||||
output.value = this.response.result;
|
||||
} else {
|
||||
output.value = "";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
@@ -84,10 +105,10 @@
|
||||
</div>
|
||||
<div class="container">
|
||||
<div>
|
||||
<form method="post" action="/">
|
||||
<label for="inputcurl">Команда curl</label>
|
||||
<textarea name="inputcurl" id="inputcurl" cols="120" rows="9" spellcheck="false" placeholder="curl example.com" required autofocus>{{ Модель.Команда }}</textarea>
|
||||
<input type="submit" value="Конвертировать">
|
||||
<form name="curl">
|
||||
<label for="command">Команда curl</label>
|
||||
<textarea name="command" id="command" cols="120" rows="9" spellcheck="false" placeholder="curl example.com" required autofocus></textarea>
|
||||
<input type="button" onclick="convert()" value="Конвертировать">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -96,8 +117,8 @@
|
||||
<label for="output">Код 1C</label>
|
||||
<textarea name="output" id="output" cols="120" rows="9" wrap="off" spellcheck="false" placeholder='Соединение = Новый HTTPСоединение("example.com", 80);
|
||||
HTTPЗапрос = Новый HTTPЗапрос("/");
|
||||
HTTPОтвет = Соединение.ВызватьHTTPМетод("GET", HTTPЗапрос);'>{{ Модель.ПрограммныйКод }}</textarea>
|
||||
<input type="submit" value="Скопировать">
|
||||
HTTPОтвет = Соединение.ВызватьHTTPМетод("GET", HTTPЗапрос);'></textarea>
|
||||
<input type="button" value="Скопировать">
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
|
||||
@@ -5,67 +5,38 @@
|
||||
|
||||
&ТочкаМаршрута("")
|
||||
&Отображение("./Классы/interface/view/index.html")
|
||||
Процедура Главная(Запрос, Ответ) Экспорт
|
||||
Перем Ошибки;
|
||||
|
||||
ПараметрыЗапроса = ПараметрыИзТекста(Запрос.Тело);
|
||||
|
||||
Ответ.Модель = Модель();
|
||||
|
||||
Команда = ПараметрыЗапроса.Получить("inputcurl");
|
||||
Если Команда <> Неопределено Тогда
|
||||
Ответ.Модель.Команда = Команда;
|
||||
КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
|
||||
|
||||
Попытка
|
||||
Результат = КонвертерКомандыCURL.Конвертировать(Команда, Новый ГенераторПрограммногоКода1С(), Ошибки);
|
||||
Исключение
|
||||
Ответ.Модель.ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
Ответ.Модель.ПрограммныйКод = Результат;
|
||||
КонецЕсли;
|
||||
Процедура Главная(Ответ) Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция Модель()
|
||||
Модель = Новый Структура();
|
||||
Модель.Вставить("Команда", "");
|
||||
Модель.Вставить("ПрограммныйКод", "");
|
||||
Модель.Вставить("ТекстОшибки", "");
|
||||
Возврат Модель;
|
||||
КонецФункции
|
||||
&ТочкаМаршрута("/convert")
|
||||
Процедура Конвертировать(ПараметрыЗапросаИменные, Ответ) Экспорт
|
||||
Перем Ошибки;
|
||||
|
||||
Функция ПараметрыИзТекста(ПараметрыТекстом, РазделительПараметров = "&") Экспорт
|
||||
|
||||
Результат = Новый Соответствие();
|
||||
Данные = Новый Структура("result, errors", "", Новый Массив());
|
||||
|
||||
Если ЗначениеЗаполнено(ПараметрыТекстом) Тогда
|
||||
|
||||
ПараметрыТекстом = СтрЗаменить(ПараметрыТекстом, "+", " ");
|
||||
ТекстКоманды = ПараметрыЗапросаИменные.Получить("cmd");
|
||||
Если ТекстКоманды <> Неопределено Тогда
|
||||
КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
|
||||
|
||||
МассивПараметров = СтрРазделить(РаскодироватьСтроку(ПараметрыТекстом, СпособКодированияСтроки.КодировкаURL), РазделительПараметров, Ложь);
|
||||
Для Каждого ТекПараметрСтрокой из МассивПараметров Цикл
|
||||
ТекПараметр = РазделитьСтроку(ТекПараметрСтрокой, "=");
|
||||
Результат.Вставить(ТекПараметр.Лево, ТекПараметр.Право);
|
||||
КонецЦикла;
|
||||
Попытка
|
||||
Данные.result = КонвертерКомандыCURL.Конвертировать(ТекстКоманды, Новый ГенераторПрограммногоКода1С(), Ошибки);
|
||||
|
||||
Для Каждого Ошибка Из Ошибки Цикл
|
||||
Данные.errors.Добавить(НоваяОшибка(Ошибка.Текст, Ошибка.Критичная));
|
||||
КонецЦикла;
|
||||
Исключение
|
||||
Данные.errors.Добавить(НоваяОшибка(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()), Истина));
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
Парсер = Новый ПарсерJSON();
|
||||
|
||||
Функция РазделитьСтроку(Строка, Разделитель) Экспорт
|
||||
Результат = Новый Структура("Лево, Право","","");
|
||||
ПозицияРазделителя = СтрНайти(Строка, Разделитель);
|
||||
Ответ.УстановитьТипКонтента("json");
|
||||
Ответ.ТелоТекст = Парсер.ЗаписатьJSON(Данные);
|
||||
|
||||
Если ПозицияРазделителя = 0 Тогда
|
||||
Результат.Лево = Строка;
|
||||
Иначе
|
||||
Результат.Лево = Лев(Строка, ПозицияРазделителя - 1);
|
||||
Результат.Право = Сред(Строка, ПозицияРазделителя + СтрДлина(Разделитель));
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
|
||||
Возврат Результат;
|
||||
Функция НоваяОшибка(Текст, Критичная = Ложь)
|
||||
Возврат Новый Структура("text, critical", Текст, Критичная);
|
||||
КонецФункции
|
||||
Reference in New Issue
Block a user