Skip to content

Commit 5745244

Browse files
authored
Merge pull request alei1180#157 from alei1180/feat/connector
feat/connector
2 parents bc591c0 + a1df2e4 commit 5745244

28 files changed

+4708
-1435
lines changed

README.md

+52-12
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ opm install curlone
2424

2525
## Использование
2626

27-
### web приложение
27+
## web приложение
2828

2929
Запуск приложения:
3030

@@ -58,12 +58,27 @@ curlone web -o -p 3333
5858
>
5959
>HTTPОтвет = Соединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
6060
>```
61+
>
62+
>Код Connector
63+
>
64+
>```bsl
65+
>Заголовки = Новый Соответствие();
66+
>Заголовки.Вставить("X-Header", "value");
67+
>
68+
>Данные = Новый Соответствие();
69+
>Данные.Вставить("key", "value");
70+
>
71+
>ДополнительныеПараметры = Новый Структура();
72+
>ДополнительныеПараметры.Вставить("Заголовки", Заголовки);
73+
>
74+
>Результат = КоннекторHTTP.Post("https://httpbin.org/post", Данные, ДополнительныеПараметры);
75+
>```
6176
6277
Горячие клавиши:
6378
6479
* `ctrl + enter` - вызов команды `Конвертировать`
6580
66-
### cli приложение
81+
## cli приложение
6782
6883
Синтаксис команды:
6984
@@ -81,22 +96,47 @@ curlone convert <команда>
8196
>
8297
>Команда curlone
8398
>
99+
>Код 1C
100+
>
101+
>```shell
102+
>curlone convert 1c https://httpbin.org/post --request POST -d "key=value" -H "X-Header: value"
103+
>```
104+
>
105+
>Код Connector
106+
>
84107
>```shell
85-
>curlone convert https://httpbin.org/post --request POST -d "key=value" -H "X-Header: value"
108+
>curlone convert connector https://httpbin.org/post --request POST -d "key=value" -H "X-Header: value"
86109
>```
87110
88-
### библиотека
111+
## библиотека
89112
90113
Пример использования:
91114
92-
```bsl
93-
#Использовать curlone
94-
95-
КонсольнаяКоманда = "curl https://httpbin.org/post --request POST -d ""key=value"" -H ""X-Header: value""";
96-
97-
КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
98-
Результат = КонвертерКомандыCURL.Конвертировать(КонсольнаяКоманда);
99-
```
115+
>Код 1C
116+
>
117+
>```bsl
118+
>#Использовать curlone
119+
>
120+
>КонсольнаяКоманда = "curl https://httpbin.org/post --request POST -d ""key=value"" -H ""X-Header: value""";
121+
>
122+
>Генератор = Новый ГенераторПрограммногоКода1С();
123+
>
124+
>КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
125+
>Результат = КонвертерКомандыCURL.Конвертировать(КонсольнаяКоманда, Генератор);
126+
>```
127+
>
128+
>Код Connector
129+
>
130+
>```bsl
131+
>#Использовать curlone
132+
>
133+
>КонсольнаяКоманда = "curl https://httpbin.org/post --request POST -d ""key=value"" -H ""X-Header: value""";
134+
>
135+
>Генератор = Новый ГенераторПрограммногоКодаКоннекторHTTP();
136+
>
137+
>КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
138+
>Результат = КонвертерКомандыCURL.Конвертировать(КонсольнаяКоманда, Генератор);
139+
>```
100140
101141
## Особенности использования
102142

autumn-properties.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@
1414
"cli": {
1515
"ИмяПриложения": "curlone",
1616
"ПолноеИмяПриложения": "Конвертер команды curl в код на языке 1С",
17-
"ВерсияПриложения": "1.0.0"
17+
"ВерсияПриложения": "1.1.0"
1818
}
1919
}

lib.config

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<package-def>
2-
<class name="ГенераторПрограммногоКода1С" file="src/core/Классы/ГенераторПрограммногоКода1С.os"/>
3-
<class name="ПарсерКонсольнойКоманды" file="src/core/Классы/ПарсерКонсольнойКоманды.os"/>
42
<class name="КонвертерКомандыCURL" file="src/core/Классы/КонвертерКомандыCURL.os"/>
3+
<class name="ПарсерКонсольнойКоманды" file="src/core/Классы/ПарсерКонсольнойКоманды.os"/>
4+
<class name="ГенераторПрограммногоКода1С" file="src/core/Классы/ГенераторПрограммногоКода1С.os"/>
5+
<class name="ГенераторПрограммногоКодаКоннекторHTTP" file="src/core/Классы/ГенераторПрограммногоКодаКоннекторHTTP.os"/>
56
</package-def>

packagedef

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Описание.Имя("curlone")
2-
.Версия("1.0.0")
2+
.Версия("1.1.0")
33
.Автор("Alexander Osadchy, Dmitry Ivanov, Gleb Bogachev")
44
.АдресАвтора("https://github.com/alei1180, https://github.com/Stivo182, https://github.com/pinkycat")
55
.Описание("Конвертер команды curl в код на языке 1С")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
#Использовать coloratos
2+
#Использовать "../../core"
3+
#Использовать "../../internal"
4+
5+
Перем ВходящиеАргументы; // Массив из Строка
6+
Перем Генератор; // Объект генератора программного кода
7+
Перем РезультатКонвертации; // Строка
8+
9+
#Область ПрограммныйИнтерфейс
10+
11+
Процедура Конвертировать() Экспорт
12+
13+
Генератор = Неопределено;
14+
15+
Если Не НайденаКоманда() Тогда
16+
ВызватьИсключение "Не найдена команда convert";
17+
КонецЕсли;
18+
19+
ПодготовленныеАргументы = ПодготовитьАргументы();
20+
21+
Ошибки = Новый Массив();
22+
КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
23+
24+
Попытка
25+
РезультатКонвертации = КонвертерКомандыCURL.Конвертировать(ПодготовленныеАргументы, Генератор, Ошибки);
26+
Исключение
27+
РезультатКонвертации = "";
28+
Ошибки.Добавить(ОбщегоНазначения.НоваяКритичнаяОшибка(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())));
29+
КонецПопытки;
30+
31+
Для Каждого Ошибка Из Ошибки Цикл
32+
Цвет = ?(Ошибка.Критичная, "Красный", "Желтый");
33+
ЦветнойВывод.Вывести("// ");
34+
ЦветнойВывод.ВывестиСтроку(Ошибка.Текст, Цвет);
35+
КонецЦикла;
36+
37+
Если ЗначениеЗаполнено(РезультатКонвертации) Тогда
38+
Если Ошибки.Количество() Тогда
39+
Консоль.Вывести(Символы.ПС);
40+
КонецЕсли;
41+
42+
Консоль.Вывести(РезультатКонвертации);
43+
КонецЕсли;
44+
45+
КонецПроцедуры
46+
47+
Функция НайденаКоманда() Экспорт
48+
Возврат ВходящиеАргументы.Количество() И НРег(ВходящиеАргументы[0]) = "convert";
49+
КонецФункции
50+
51+
#КонецОбласти
52+
53+
#Область СлужебныйПрограммныйИнтерфейс
54+
55+
Функция ПолучитьРезультат() Экспорт
56+
Возврат РезультатКонвертации;
57+
КонецФункции
58+
59+
#КонецОбласти
60+
61+
#Область СлужебныеПроцедурыИФункции
62+
63+
Процедура ПриСозданииОбъекта(Аргументы)
64+
ВходящиеАргументы = Аргументы;
65+
РезультатКонвертации = "";
66+
КонецПроцедуры
67+
68+
Функция ПодготовитьАргументы()
69+
70+
ПодготовленныеАргументы = Новый Массив();
71+
ОбщегоНазначения.ДополнитьМассив(ПодготовленныеАргументы, ВходящиеАргументы);
72+
73+
ПодготовленныеАргументы[0] = "curl";
74+
75+
ПрочитатьАргументГенератора(ПодготовленныеАргументы);
76+
УдалитьПовторяющийАргументCurl(ПодготовленныеАргументы);
77+
78+
Возврат ПодготовленныеАргументы;
79+
80+
КонецФункции
81+
82+
Процедура УдалитьПовторяющийАргументCurl(Аргументы)
83+
84+
Если Аргументы.Количество() > 1 И НРег(Аргументы[1]) = "curl" Тогда
85+
Аргументы.Удалить(1);
86+
КонецЕсли;
87+
88+
КонецПроцедуры
89+
90+
Процедура ПрочитатьАргументГенератора(Аргументы)
91+
92+
ИндексАргумента = 1;
93+
94+
Если Аргументы.Количество() > ИндексАргумента Тогда
95+
Аргумент = НРег(Аргументы[ИндексАргумента]);
96+
Генератор = ПолучитьГенераторПоАргументу(Аргумент);
97+
КонецЕсли;
98+
99+
Если Генератор = Неопределено Тогда
100+
Генератор = ГенераторПоУмолчанию();
101+
Иначе
102+
Аргументы.Удалить(ИндексАргумента);
103+
КонецЕсли;
104+
105+
КонецПроцедуры
106+
107+
Функция ПолучитьГенераторПоАргументу(Аргумент)
108+
Если Аргумент = "connector" Тогда
109+
Возврат Новый ГенераторПрограммногоКодаКоннекторHTTP();
110+
ИначеЕсли Аргумент = "1c" Тогда
111+
Возврат Новый ГенераторПрограммногоКода1С();
112+
КонецЕсли;
113+
КонецФункции
114+
115+
Функция ГенераторПоУмолчанию()
116+
Возврат Новый ГенераторПрограммногоКода1С();
117+
КонецФункции
118+
119+
#КонецОбласти

0 commit comments

Comments
 (0)