Skip to content

Commit 634ef40

Browse files
authored
Полная поддержка всех возможностей при использовании 1Script >=1.1.1 (#9)
1 parent a275bc2 commit 634ef40

File tree

9 files changed

+109
-52
lines changed

9 files changed

+109
-52
lines changed

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
*.ospx
2+
tests.xml
3+
coverage/
4+
tests-reports/
5+
.sonar/
6+
.sonarlint/
7+
.scannerwork/
8+
bdd-log.xml

.travis.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ env:
88
- CHANNEL=dev
99
- PACKAGE_NAME=1connector
1010
matrix:
11-
- OSCRIPT_VERSION=1_0_21
11+
- OSCRIPT_VERSION=1_1_1
1212
- OSCRIPT_VERSION=night-build
1313
matrix:
1414
allow_failures:
@@ -34,11 +34,11 @@ before_cache:
3434
| xargs -n 2 -t sh -c 'test -e $HOME/docker/$1.tar.gz || docker save $0 | gzip -2 > $HOME/docker/$1.tar.gz'
3535
3636
install:
37-
- docker pull evilbeaver/onescript:1.0.21
37+
- docker pull evilbeaver/onescript:1.1.1
3838

3939
script:
4040
- docker version
41-
- docker run -it -e OSCRIPT_VERSION=$OSCRIPT_VERSION -v $(pwd):/work_dir evilbeaver/onescript:1.0.21 sh -c 'cd /work_dir; sh /work_dir/travis-ci.sh; exit' | tee /tmp/test.log
41+
- docker run -it -e OSCRIPT_VERSION=$OSCRIPT_VERSION -v $(pwd):/work_dir evilbeaver/onescript:1.1.1 sh -c 'cd /work_dir; sh /work_dir/travis-ci.sh; exit' | tee /tmp/test.log
4242
- grep 'Результат прогона тестов <Да>' /tmp/test.log
4343
after_success:
4444
# - bash <(curl -s https://codecov.io/bash)
@@ -54,7 +54,7 @@ jobs:
5454
- stage: Сборка и публикация github & hub.oscript.io
5555
script: skip
5656
before_deploy:
57-
- docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.21 sh -c 'cd /work_dir; opm build ./ ; exit'
57+
- docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.1.1 sh -c 'cd /work_dir; opm build ./ ; exit'
5858
deploy:
5959
- provider: releases
6060
api_key: "$GITHUB_OAUTH_TOKEN"
@@ -66,12 +66,12 @@ jobs:
6666
tags: true
6767
- provider: script
6868
skip_cleanup: true
69-
script: docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.21 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel dev --file ./$PACKAGE_NAME-*.ospx; exit'
69+
script: docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.1.1 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel dev --file ./$PACKAGE_NAME-*.ospx; exit'
7070
on:
7171
branch: develop
7272
- provider: script
7373
skip_cleanup: true
74-
script: docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.21 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel stable --file ./$PACKAGE_NAME-*.ospx; exit'
74+
script: docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.1.1 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel stable --file ./$PACKAGE_NAME-*.ospx; exit'
7575
on:
7676
branch: master
7777
tags: true

README.md

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[![Stars](https://img.shields.io/github/stars/vbondarevsky/1connector.svg?label=Github%20%E2%98%85&a)](https://github.com/vbondarevsky/1connector/stargazers)
44
[![Release](https://img.shields.io/github/tag/vbondarevsky/1connector.svg?label=Last%20release&a)](https://github.com/vbondarevsky/1connector/releases)
5-
[![Открытый чат проекта https://gitter.im/EvilBeaver/oscript-library](https://badges.gitter.im/vbondarevsky/1connector.png)](https://gitter.im/EvilBeaver/oscript-library)
5+
[![Чат по движку OneScript и библиотеке пакетов oscript-library](https://github.com/Patrolavia/telegram-badge/blob/master/chat.svg)](https://t.me/oscript_library)
66

77
[![Build Status](https://travis-ci.org/vbondarevsky/1connector.svg?branch=master)](https://travis-ci.org/vbondarevsky/1connector)
88

@@ -22,24 +22,21 @@
2222
- Передача параметров в строку запроса (в URL)
2323
- Удобная работа с запросами и ответами в формате `JSON`
2424
- Отправка данных формы (полей формы), `application/x-www-form-urlencoded`
25-
- ~Отправка данных формы (полей формы и файлов), `multipart/form-data`~
26-
https://github.com/EvilBeaver/OneScript/issues/861
27-
- ~Прозрачная поддержка ответов, закодированных `GZip`~
28-
https://github.com/EvilBeaver/OneScript/issues/857
25+
- Отправка данных формы (полей формы и файлов), `multipart/form-data`
26+
- Прозрачная поддержка ответов, закодированных `GZip`
2927
- `Basic` и `Digest` аутентификация
3028
- Автоматическое разрешение редиректов
3129
- Установка и чтение Cookies
32-
- ~Работа в рамках сессии с сохранением состояния (cookies, аутентификация и пр.)~
33-
https://github.com/EvilBeaver/OneScript/issues/856
30+
- Работа в рамках сессии с сохранением состояния (cookies, аутентификация и пр.)
3431
- И многое другое
3532

3633
## Требования
37-
Платформа **1.0.21** и выше.
34+
Платформа **1.1.1** и выше.
3835

3936
## Установка
4037

4138
Для установки необходимо:
42-
* Скачать файл configor.ospx из раздела [releases](https://github.com/vbondarevsky/1connector/releases)
39+
* Скачать файл 1connector-*.ospx из раздела [releases](https://github.com/vbondarevsky/1connector/releases)
4340
* Воспользоваться командой:
4441

4542
```
@@ -53,8 +50,8 @@ opm install 1connector
5350

5451
## Публичный интерфейс
5552

56-
[Документация публичного интерфейса](docs/README.md)
53+
[Документация публичного интерфейса](https://github.com/vbondarevsky/1connector/blob/develop/docs/README.md)
5754

5855
## Лицензия
5956

60-
Смотри файл [LICENSE](LICENSE).
57+
Смотри файл [LICENSE](https://github.com/vbondarevsky/1connector/blob/develop/LICENSE).

features/build.feature

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
Чтобы гарантировать возможность установку моего продукта у пользователей
77

88
Контекст: Отключение отладки в логах
9-
Допустим Я выключаю отладку лога с именем "oscript.lib.ххх"
9+
Допустим Я выключаю отладку лога с именем "oscript.lib.1connector"
1010
И Я очищаю параметры команды "opm" в контексте
1111

1212
Сценарий: Выполнение команды без параметров

packagedef

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
Описание.Имя("1connector")
2-
.Версия("1.0.4")
2+
.Версия("1.1.1")
33
.Автор("Vladimir Bondarevskiy")
44
.АдресАвтора("vbondarevsky@gmail.com")
55
.Описание("Коннектор: удобный HTTP-клиент для OScript")
6-
.ВерсияСреды("1.0.21")
6+
.ВерсияСреды("1.1.1")
77
.ВключитьФайл("src")
88
.ВключитьФайл("docs")
99
.ВключитьФайл("LICENSE")

sonar-project.properties

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# must be unique in a given SonarQube instance
2+
sonar.projectKey=1connector
3+
4+
# this is the name displayed in the SonarQube UI
5+
sonar.projectName=1connector
6+
7+
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
8+
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
9+
# If not set, SonarQube starts looking for source code from the directory containing
10+
# the sonar-project.properties file.
11+
12+
sonar.sources=./src
13+
14+
# Encoding of the source code. Default is default system encoding
15+
sonar.sourceEncoding=UTF-8
16+
17+
sonar.coverageReportPaths=coverage/genericCoverage.xml

sonar-qube.sh

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/bin/bash
2+
3+
oscript ./tasks/coverage.os
4+
5+
temp=`cat packagedef | grep ".Версия(" | sed 's|[^"]*"||' | sed -r 's/".+//'`
6+
version=${temp##*|}
7+
8+
if [ "$TRAVIS_SECURE_ENV_VARS" == "true" ]; then
9+
if [ "$TRAVIS_BRANCH" == "develop" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
10+
11+
sonar-scanner \
12+
-Dsonar.host.url=$SONAR_HOST \
13+
-Dsonar.login=$SONAR_TOKEN \
14+
-Dsonar.projectVersion=$version\
15+
-Dsonar.scanner.skip=false
16+
fi
17+
fi

src/internal/Модули/КоннекторHTTPСлужебный.os

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,12 @@
5656
НовыйURL = БазовыйURL + НовыйURL;
5757
КонецЕсли;
5858
ПодготовленныйЗапрос.URL = КодироватьСтроку(НовыйURL, СпособКодированияСтроки.URLВКодировкеURL);
59-
ПодготовленныйЗапрос.HTTPЗапрос.АдресРесурса = СобратьАдресРесурса(РазобратьURL(НовыйURL), Неопределено);
60-
59+
НовыйHTTPЗапрос = Новый HTTPЗапрос(СобратьАдресРесурса(РазобратьURL(НовыйURL), Неопределено));
6160
ПереопределитьМетод(ПодготовленныйЗапрос, Ответ);
6261

6362
// https://github.com/requests/requests/issues/1084
6463
Если Ответ.КодСостояния <> 307 И Ответ.КодСостояния <> 308 Тогда
6564
// https://github.com/requests/requests/issues/3490
66-
ПодготовленныйЗапрос.HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(Base64Значение(""));
6765
ЗаголовкиДляУдаления = Новый Массив;
6866
Заголовки = СтрРазделить("content-length,content-type,transfer-encoding", ",", Ложь);
6967
Для Каждого Заголовок Из ПодготовленныйЗапрос.Заголовки Цикл
@@ -74,8 +72,11 @@
7472
Для Каждого ЗаголовокДляУдаления Из ЗаголовкиДляУдаления Цикл
7573
ПодготовленныйЗапрос.Заголовки.Удалить(ЗаголовокДляУдаления);
7674
КонецЦикла;
77-
ПодготовленныйЗапрос.HTTPЗапрос.Заголовки = ПодготовленныйЗапрос.Заголовки;
75+
НовыйHTTPЗапрос.Заголовки = ПодготовленныйЗапрос.Заголовки;
76+
Иначе
77+
НовыйHTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ПодготовленныйЗапрос.HTTPЗапрос.ПолучитьТелоКакДвоичныеДанные());
7878
КонецЕсли;
79+
ПодготовленныйЗапрос.HTTPЗапрос = НовыйHTTPЗапрос;
7980
Для Каждого Заголовок Из ПодготовленныйЗапрос.Заголовки Цикл
8081
Если НРег(Заголовок.Ключ) = "cookie" Тогда
8182
ПодготовленныйЗапрос.Заголовки.Удалить(Заголовок.Ключ);
@@ -210,9 +211,7 @@
210211
Продолжить;
211212
КонецЕсли;
212213
// INFO: проверка срока действия игнорируется (Наименование.Значение.СрокДействия)
213-
Если ЗначениеЗаполнено(Наименование.Значение.Порт) Тогда
214-
// INFO: проверка порта игнорируется
215-
КонецЕсли;
214+
// INFO: проверка порта игнорируется
216215

217216
Результат.Добавить(Наименование.Значение);
218217
КонецЦикла;
@@ -376,8 +375,9 @@
376375
Разделитель = СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
377376
РазделительСтрок = Символы.ВК + Символы.ПС;
378377

378+
ПотокДанных = Новый ПотокВПамяти();
379379
ЗаписьДанных = Новый ЗаписьДанных(
380-
HTTPЗапрос.ПолучитьТелоКакПоток(),
380+
ПотокДанных,
381381
КодировкаТекста.UTF8,
382382
ПорядокБайтов.LittleEndian,
383383
"",
@@ -394,8 +394,9 @@
394394
ЗаписьДанных.ЗаписатьСтроку(РазделительСтрок);
395395
КонецЦикла;
396396
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--" + РазделительСтрок);
397+
HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ПотокДанных.ЗакрытьИПолучитьДвоичныеДанные());
397398
ЗаписьДанных.Закрыть();
398-
399+
399400
Возврат СтрШаблон("multipart/form-data; boundary=%1", Разделитель);
400401

401402
КонецФункции
@@ -635,12 +636,16 @@
635636

636637
Функция КонструкторCookie(Наименование = "", Значение = Неопределено)
637638

638-
Возврат Новый Структура(
639-
"Наименование, Значение, Домен, Путь, Порт, СрокДействия, ТолькоБезопасноеСоединение",
640-
Наименование,
641-
Значение,
642-
"",
643-
"");
639+
Cookie = Новый Структура;
640+
Cookie.Вставить("Наименование", Наименование);
641+
Cookie.Вставить("Значение", Значение);
642+
Cookie.Вставить("Домен", "");
643+
Cookie.Вставить("Путь", "");
644+
Cookie.Вставить("Порт", Неопределено);
645+
Cookie.Вставить("СрокДействия", Неопределено);
646+
Cookie.Вставить("ТолькоБезопасноеСоединение", Неопределено);
647+
648+
Возврат Cookie;
644649

645650
КонецФункции
646651

@@ -832,13 +837,18 @@
832837
Пароль = Аутентификация.Пароль;
833838
КонецЕсли;
834839

835-
Возврат Новый HTTPСоединение(
840+
Соединение = Новый HTTPСоединение(
836841
ПараметрыСоединения.Схема + "://" + ПараметрыСоединения.Сервер,
837842
ПараметрыСоединения.Порт,
838843
Пользователь, Пароль,
839844
ДополнительныеПараметры.Прокси,
840-
ДополнительныеПараметры.Таймаут);
845+
ДополнительныеПараметры.Таймаут);
846+
847+
// Хак для обратной совместимости с версией oscript без свойства РазрешитьАвтоматическоеПеренаправление
848+
ЗаполнитьЗначенияСвойств(Соединение, Новый Структура("РазрешитьАвтоматическоеПеренаправление", Ложь));
841849

850+
Возврат Соединение;
851+
842852
КонецФункции
843853

844854
Функция ВыбратьЗначение(Значение1, Значение2, Ключ, ЗначениеПоУмолчанию)
@@ -905,8 +915,16 @@
905915

906916
Функция РазобратьURL(Знач URL)
907917

918+
ДопустимыеСхемы = СтрРазделить("http,https", ",");
919+
908920
Схема = "";
909-
РазбитьСтрокуПоРазделителю(Схема, URL, "://");
921+
URLБезСхемы = URL;
922+
РазбитьСтрокуПоРазделителю(Схема, URLБезСхемы, "://");
923+
Если ДопустимыеСхемы.Найти(НРег(Схема)) <> Неопределено Тогда
924+
URL = URLБезСхемы;
925+
Иначе
926+
Схема = "";
927+
КонецЕсли;
910928

911929
Путь = "";
912930
Результат = РазделитьПоПервомуНайденномуРазделителю(URL, СтрРазделить("/,?,#", ","));

0 commit comments

Comments
 (0)