Skip to content

Commit

Permalink
Полная поддержка всех возможностей при использовании 1Script >=1.1.1 (#9
Browse files Browse the repository at this point in the history
)
  • Loading branch information
vbondarevsky authored Jun 12, 2019
1 parent a275bc2 commit 634ef40
Show file tree
Hide file tree
Showing 9 changed files with 109 additions and 52 deletions.
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
*.ospx
tests.xml
coverage/
tests-reports/
.sonar/
.sonarlint/
.scannerwork/
bdd-log.xml
12 changes: 6 additions & 6 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ env:
- CHANNEL=dev
- PACKAGE_NAME=1connector
matrix:
- OSCRIPT_VERSION=1_0_21
- OSCRIPT_VERSION=1_1_1
- OSCRIPT_VERSION=night-build
matrix:
allow_failures:
Expand All @@ -34,11 +34,11 @@ before_cache:
| xargs -n 2 -t sh -c 'test -e $HOME/docker/$1.tar.gz || docker save $0 | gzip -2 > $HOME/docker/$1.tar.gz'
install:
- docker pull evilbeaver/onescript:1.0.21
- docker pull evilbeaver/onescript:1.1.1

script:
- docker version
- 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
- 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
- grep 'Результат прогона тестов <Да>' /tmp/test.log
after_success:
# - bash <(curl -s https://codecov.io/bash)
Expand All @@ -54,7 +54,7 @@ jobs:
- stage: Сборка и публикация github & hub.oscript.io
script: skip
before_deploy:
- docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.21 sh -c 'cd /work_dir; opm build ./ ; exit'
- docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.1.1 sh -c 'cd /work_dir; opm build ./ ; exit'
deploy:
- provider: releases
api_key: "$GITHUB_OAUTH_TOKEN"
Expand All @@ -66,12 +66,12 @@ jobs:
tags: true
- provider: script
skip_cleanup: true
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'
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'
on:
branch: develop
- provider: script
skip_cleanup: true
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'
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'
on:
branch: master
tags: true
19 changes: 8 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

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

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

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

## Требования
Платформа **1.0.21** и выше.
Платформа **1.1.1** и выше.

## Установка

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

```
Expand All @@ -53,8 +50,8 @@ opm install 1connector

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

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

## Лицензия

Смотри файл [LICENSE](LICENSE).
Смотри файл [LICENSE](https://github.com/vbondarevsky/1connector/blob/develop/LICENSE).
2 changes: 1 addition & 1 deletion features/build.feature
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
Чтобы гарантировать возможность установку моего продукта у пользователей

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

Сценарий: Выполнение команды без параметров
Expand Down
4 changes: 2 additions & 2 deletions packagedef
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
Описание.Имя("1connector")
.Версия("1.0.4")
.Версия("1.1.1")
.Автор("Vladimir Bondarevskiy")
.АдресАвтора("[email protected]")
.Описание("Коннектор: удобный HTTP-клиент для OScript")
.ВерсияСреды("1.0.21")
.ВерсияСреды("1.1.1")
.ВключитьФайл("src")
.ВключитьФайл("docs")
.ВключитьФайл("LICENSE")
Expand Down
17 changes: 17 additions & 0 deletions sonar-project.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# must be unique in a given SonarQube instance
sonar.projectKey=1connector

# this is the name displayed in the SonarQube UI
sonar.projectName=1connector

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
# If not set, SonarQube starts looking for source code from the directory containing
# the sonar-project.properties file.

sonar.sources=./src

# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

sonar.coverageReportPaths=coverage/genericCoverage.xml
17 changes: 17 additions & 0 deletions sonar-qube.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash

oscript ./tasks/coverage.os

temp=`cat packagedef | grep ".Версия(" | sed 's|[^"]*"||' | sed -r 's/".+//'`
version=${temp##*|}

if [ "$TRAVIS_SECURE_ENV_VARS" == "true" ]; then
if [ "$TRAVIS_BRANCH" == "develop" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then

sonar-scanner \
-Dsonar.host.url=$SONAR_HOST \
-Dsonar.login=$SONAR_TOKEN \
-Dsonar.projectVersion=$version\
-Dsonar.scanner.skip=false
fi
fi
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,12 @@
НовыйURL = БазовыйURL + НовыйURL;
КонецЕсли;
ПодготовленныйЗапрос.URL = КодироватьСтроку(НовыйURL, СпособКодированияСтроки.URLВКодировкеURL);
ПодготовленныйЗапрос.HTTPЗапрос.АдресРесурса = СобратьАдресРесурса(РазобратьURL(НовыйURL), Неопределено);

НовыйHTTPЗапрос = Новый HTTPЗапрос(СобратьАдресРесурса(РазобратьURL(НовыйURL), Неопределено));
ПереопределитьМетод(ПодготовленныйЗапрос, Ответ);

// https://github.com/requests/requests/issues/1084
Если Ответ.КодСостояния <> 307 И Ответ.КодСостояния <> 308 Тогда
// https://github.com/requests/requests/issues/3490
ПодготовленныйЗапрос.HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(Base64Значение(""));
ЗаголовкиДляУдаления = Новый Массив;
Заголовки = СтрРазделить("content-length,content-type,transfer-encoding", ",", Ложь);
Для Каждого Заголовок Из ПодготовленныйЗапрос.Заголовки Цикл
Expand All @@ -74,8 +72,11 @@
Для Каждого ЗаголовокДляУдаления Из ЗаголовкиДляУдаления Цикл
ПодготовленныйЗапрос.Заголовки.Удалить(ЗаголовокДляУдаления);
КонецЦикла;
ПодготовленныйЗапрос.HTTPЗапрос.Заголовки = ПодготовленныйЗапрос.Заголовки;
НовыйHTTPЗапрос.Заголовки = ПодготовленныйЗапрос.Заголовки;
Иначе
НовыйHTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ПодготовленныйЗапрос.HTTPЗапрос.ПолучитьТелоКакДвоичныеДанные());
КонецЕсли;
ПодготовленныйЗапрос.HTTPЗапрос = НовыйHTTPЗапрос;
Для Каждого Заголовок Из ПодготовленныйЗапрос.Заголовки Цикл
Если НРег(Заголовок.Ключ) = "cookie" Тогда
ПодготовленныйЗапрос.Заголовки.Удалить(Заголовок.Ключ);
Expand Down Expand Up @@ -210,9 +211,7 @@
Продолжить;
КонецЕсли;
// INFO: проверка срока действия игнорируется (Наименование.Значение.СрокДействия)
Если ЗначениеЗаполнено(Наименование.Значение.Порт) Тогда
// INFO: проверка порта игнорируется
КонецЕсли;
// INFO: проверка порта игнорируется

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

ПотокДанных = Новый ПотокВПамяти();
ЗаписьДанных = Новый ЗаписьДанных(
HTTPЗапрос.ПолучитьТелоКакПоток(),
ПотокДанных,
КодировкаТекста.UTF8,
ПорядокБайтов.LittleEndian,
"",
Expand All @@ -394,8 +394,9 @@
ЗаписьДанных.ЗаписатьСтроку(РазделительСтрок);
КонецЦикла;
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--" + РазделительСтрок);
HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ПотокДанных.ЗакрытьИПолучитьДвоичныеДанные());
ЗаписьДанных.Закрыть();

Возврат СтрШаблон("multipart/form-data; boundary=%1", Разделитель);

КонецФункции
Expand Down Expand Up @@ -635,12 +636,16 @@

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

Возврат Новый Структура(
"Наименование, Значение, Домен, Путь, Порт, СрокДействия, ТолькоБезопасноеСоединение",
Наименование,
Значение,
"",
"");
Cookie = Новый Структура;
Cookie.Вставить("Наименование", Наименование);
Cookie.Вставить("Значение", Значение);
Cookie.Вставить("Домен", "");
Cookie.Вставить("Путь", "");
Cookie.Вставить("Порт", Неопределено);
Cookie.Вставить("СрокДействия", Неопределено);
Cookie.Вставить("ТолькоБезопасноеСоединение", Неопределено);

Возврат Cookie;

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

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

Возврат Новый HTTPСоединение(
Соединение = Новый HTTPСоединение(
ПараметрыСоединения.Схема + "://" + ПараметрыСоединения.Сервер,
ПараметрыСоединения.Порт,
Пользователь, Пароль,
ДополнительныеПараметры.Прокси,
ДополнительныеПараметры.Таймаут);
ДополнительныеПараметры.Таймаут);

// Хак для обратной совместимости с версией oscript без свойства РазрешитьАвтоматическоеПеренаправление
ЗаполнитьЗначенияСвойств(Соединение, Новый Структура("РазрешитьАвтоматическоеПеренаправление", Ложь));

Возврат Соединение;

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

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

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

ДопустимыеСхемы = СтрРазделить("http,https", ",");

Схема = "";
РазбитьСтрокуПоРазделителю(Схема, URL, "://");
URLБезСхемы = URL;
РазбитьСтрокуПоРазделителю(Схема, URLБезСхемы, "://");
Если ДопустимыеСхемы.Найти(НРег(Схема)) <> Неопределено Тогда
URL = URLБезСхемы;
Иначе
Схема = "";
КонецЕсли;

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

0 comments on commit 634ef40

Please sign in to comment.