mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2024-11-28 09:08:38 +02:00
Преобразование OPI -> OInt (workflow)
This commit is contained in:
parent
c8ea5aba5f
commit
977170f7dd
174
.github/workflows/oint_test_Dropbox.yml
vendored
Normal file
174
.github/workflows/oint_test_Dropbox.yml
vendored
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
|
||||||
|
name: OINT | Тестирование Dropbox
|
||||||
|
|
||||||
|
# Controls when the workflow will run
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
Decode:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: ${{ always() }}
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Расшифровать тестовые данные
|
||||||
|
run: gpg --quiet --batch --yes --decrypt --passphrase="$ENC_JSON" --output ./data.json ./data.json.gpg
|
||||||
|
env:
|
||||||
|
ENC_JSON: ${{ secrets.ENC_JSON }}
|
||||||
|
- name: Записать тестовые данные в кэш
|
||||||
|
uses: actions/cache/save@v3
|
||||||
|
with:
|
||||||
|
key: test-data
|
||||||
|
path: ./data.json
|
||||||
|
|
||||||
|
Build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: otymko/setup-onescript@v1.4
|
||||||
|
with:
|
||||||
|
version: 1.9.0
|
||||||
|
|
||||||
|
- name: Установить asserts и 1testrunner
|
||||||
|
run: |
|
||||||
|
opm install asserts
|
||||||
|
opm install 1testrunner
|
||||||
|
|
||||||
|
- name: Установить OInt
|
||||||
|
run: |
|
||||||
|
cd ./OInt
|
||||||
|
opm build
|
||||||
|
opm install *.ospx
|
||||||
|
|
||||||
|
- name: Записать артефакт
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: oint
|
||||||
|
path: ./OInt/*.ospx
|
||||||
|
|
||||||
|
|
||||||
|
Testing-Dropbox:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [Decode, Build]
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: otymko/setup-onescript@v1.4
|
||||||
|
with:
|
||||||
|
version: 1.9.0
|
||||||
|
|
||||||
|
- name: Получить тестовые данные из кэша
|
||||||
|
uses: actions/cache/restore@v3
|
||||||
|
with:
|
||||||
|
key: test-data
|
||||||
|
path: ./data.json
|
||||||
|
|
||||||
|
- name: Установить asserts и 1testrunner
|
||||||
|
run: |
|
||||||
|
opm install asserts
|
||||||
|
opm install 1testrunner
|
||||||
|
|
||||||
|
- name: Установить OInt
|
||||||
|
run: |
|
||||||
|
cd ./OInt
|
||||||
|
opm build
|
||||||
|
opm install *.ospx
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Получить/Обновить токен
|
||||||
|
if: ${{ cancelled() }} == false
|
||||||
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "ДропБокс_ПолучитьОбновитьТокен"
|
||||||
|
|
||||||
|
- name: Загрузить файл
|
||||||
|
if: ${{ cancelled() }} == false
|
||||||
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "ДропБокс_ЗагрузитьФайл"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Записать логи
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: Dropbox
|
||||||
|
path: ./test_logs
|
||||||
|
|
||||||
|
|
||||||
|
- name: Записать измененные данные
|
||||||
|
if: ${{ cancelled() }} == false
|
||||||
|
uses: actions/cache/save@v3
|
||||||
|
with:
|
||||||
|
key: test-data_new
|
||||||
|
path: ./data.json
|
||||||
|
|
||||||
|
Encode:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [Testing-Dropbox]
|
||||||
|
if: ${{ always() }}
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Обновить данные в репозитории
|
||||||
|
run: git pull https://github.com/Bayselonarrend/OpenIntegrations
|
||||||
|
|
||||||
|
- name: Получить тестовые данные из кэша
|
||||||
|
uses: actions/cache/restore@v3
|
||||||
|
with:
|
||||||
|
key: test-data_new
|
||||||
|
path: ./data.json
|
||||||
|
|
||||||
|
- name: Зашифровать данные обратно
|
||||||
|
continue-on-error: false
|
||||||
|
|
||||||
|
run: |
|
||||||
|
rm -f ./data.json.gpg
|
||||||
|
gpg --batch --symmetric --cipher-algo AES256 --passphrase="$ENC_JSON" data.json
|
||||||
|
rm -f ./data.json
|
||||||
|
env:
|
||||||
|
ENC_JSON: ${{ secrets.ENC_JSON }}
|
||||||
|
|
||||||
|
- name: Записать данные
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
|
with:
|
||||||
|
commit_user_name: Vitaly the Alpaca (bot)
|
||||||
|
commit_user_email: vitaly.the.alpaca@gmail.com
|
||||||
|
commit_author: Vitaly the Alpaca <vitaly.the.alpaca@gmail.com>
|
||||||
|
commit_message: Обновление зашифрованных данных по результатам тестов (workflow)
|
||||||
|
|
||||||
|
|
||||||
|
Clear-Cache:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [Testing-Dropbox, Encode]
|
||||||
|
if: ${{ always() }}
|
||||||
|
steps:
|
||||||
|
- name: Очистка основного кэша
|
||||||
|
run: |
|
||||||
|
curl -L \
|
||||||
|
-X DELETE \
|
||||||
|
-H "Accept: application/vnd.github+json" \
|
||||||
|
-H "Authorization: Bearer ${{ secrets.TOKEN }}" \
|
||||||
|
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||||
|
"https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=test-data"
|
||||||
|
|
||||||
|
- name: Очистка кэша Google
|
||||||
|
run: |
|
||||||
|
curl -L \
|
||||||
|
-X DELETE \
|
||||||
|
-H "Accept: application/vnd.github+json" \
|
||||||
|
-H "Authorization: Bearer ${{ secrets.TOKEN }}" \
|
||||||
|
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||||
|
"https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=test-data_google"
|
||||||
|
|
||||||
|
- name: Очистка кэша Twitter
|
||||||
|
run: |
|
||||||
|
curl -L \
|
||||||
|
-X DELETE \
|
||||||
|
-H "Accept: application/vnd.github+json" \
|
||||||
|
-H "Authorization: Bearer ${{ secrets.TOKEN }}" \
|
||||||
|
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||||
|
"https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=test-data_new"
|
8
.github/workflows/oint_test_Telegram.yml
vendored
8
.github/workflows/oint_test_Telegram.yml
vendored
@ -91,10 +91,6 @@ jobs:
|
|||||||
if: ${{ cancelled() }} == false
|
if: ${{ cancelled() }} == false
|
||||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_УстановитьWebhook"
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_УстановитьWebhook"
|
||||||
|
|
||||||
- name: Удалить Webhook
|
|
||||||
if: ${{ cancelled() }} == false
|
|
||||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_УдалитьWebhook"
|
|
||||||
|
|
||||||
- name: Отправить текстовое сообщение
|
- name: Отправить текстовое сообщение
|
||||||
if: ${{ cancelled() }} == false
|
if: ${{ cancelled() }} == false
|
||||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_ОтправитьТекстовоеСообщение"
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_ОтправитьТекстовоеСообщение"
|
||||||
@ -163,10 +159,6 @@ jobs:
|
|||||||
if: ${{ cancelled() }} == false
|
if: ${{ cancelled() }} == false
|
||||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_СоздатьУдалитьТемуФорума"
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_СоздатьУдалитьТемуФорума"
|
||||||
|
|
||||||
- name: Открыть/Закрыть главную тему
|
|
||||||
if: ${{ cancelled() }} == false
|
|
||||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_ОткрытьЗакрытьГлавнуюТему"
|
|
||||||
|
|
||||||
- name: Изменить имя главной темы
|
- name: Изменить имя главной темы
|
||||||
if: ${{ cancelled() }} == false
|
if: ${{ cancelled() }} == false
|
||||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_ИзменитьИмяГлавнойТемы"
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_ИзменитьИмяГлавнойТемы"
|
||||||
|
50
.github/workflows/oint_test_full.yml
vendored
50
.github/workflows/oint_test_full.yml
vendored
@ -91,10 +91,6 @@ jobs:
|
|||||||
if: ${{ cancelled() }} == false
|
if: ${{ cancelled() }} == false
|
||||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_УстановитьWebhook"
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_УстановитьWebhook"
|
||||||
|
|
||||||
- name: Удалить Webhook
|
|
||||||
if: ${{ cancelled() }} == false
|
|
||||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_УдалитьWebhook"
|
|
||||||
|
|
||||||
- name: Отправить текстовое сообщение
|
- name: Отправить текстовое сообщение
|
||||||
if: ${{ cancelled() }} == false
|
if: ${{ cancelled() }} == false
|
||||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_ОтправитьТекстовоеСообщение"
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_ОтправитьТекстовоеСообщение"
|
||||||
@ -163,10 +159,6 @@ jobs:
|
|||||||
if: ${{ cancelled() }} == false
|
if: ${{ cancelled() }} == false
|
||||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_СоздатьУдалитьТемуФорума"
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_СоздатьУдалитьТемуФорума"
|
||||||
|
|
||||||
- name: Открыть/Закрыть главную тему
|
|
||||||
if: ${{ cancelled() }} == false
|
|
||||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_ОткрытьЗакрытьГлавнуюТему"
|
|
||||||
|
|
||||||
- name: Изменить имя главной темы
|
- name: Изменить имя главной темы
|
||||||
if: ${{ cancelled() }} == false
|
if: ${{ cancelled() }} == false
|
||||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_ИзменитьИмяГлавнойТемы"
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Телеграм_ИзменитьИмяГлавнойТемы"
|
||||||
@ -864,10 +856,48 @@ jobs:
|
|||||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "АТ_СоздатьУдалитьЗаписи"
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "АТ_СоздатьУдалитьЗаписи"
|
||||||
|
|
||||||
|
|
||||||
|
Testing-Dropbox:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [Decode, Build]
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: otymko/setup-onescript@v1.4
|
||||||
|
with:
|
||||||
|
version: 1.9.0
|
||||||
|
|
||||||
|
- name: Получить тестовые данные из кэша
|
||||||
|
uses: actions/cache/restore@v3
|
||||||
|
with:
|
||||||
|
key: test-data
|
||||||
|
path: ./data.json
|
||||||
|
|
||||||
|
- name: Установить asserts и 1testrunner
|
||||||
|
run: |
|
||||||
|
opm install asserts
|
||||||
|
opm install 1testrunner
|
||||||
|
|
||||||
|
- name: Установить OInt
|
||||||
|
run: |
|
||||||
|
cd ./OInt
|
||||||
|
opm build
|
||||||
|
opm install *.ospx
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Получить/Обновить токен
|
||||||
|
if: ${{ cancelled() }} == false
|
||||||
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "ДропБокс_ПолучитьОбновитьТокен"
|
||||||
|
|
||||||
|
- name: Загрузить файл
|
||||||
|
if: ${{ cancelled() }} == false
|
||||||
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "ДропБокс_ЗагрузитьФайл"
|
||||||
|
|
||||||
|
|
||||||
- name: Записать логи
|
- name: Записать логи
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: Airtable
|
name: Dropbox
|
||||||
path: ./test_logs
|
path: ./test_logs
|
||||||
|
|
||||||
Encode:
|
Encode:
|
||||||
@ -911,7 +941,7 @@ jobs:
|
|||||||
|
|
||||||
Clear-Cache:
|
Clear-Cache:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-GoogleSheets, Testing-Notion, Testing-Slack, Testing-Airtable, Encode]
|
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-GoogleSheets, Testing-Notion, Testing-Slack, Testing-Airtable, Testing-Dropbox, Encode]
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
steps:
|
steps:
|
||||||
- name: Очистка основного кэша
|
- name: Очистка основного кэша
|
||||||
|
@ -623,7 +623,7 @@
|
|||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Функция ПолучитьЗаголовокАвторизации(Знач Токен) Экспорт
|
Функция ПолучитьЗаголовокАвторизации(Знач Токен)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
|
|
||||||
|
294
OInt/core/Modules/OPI_Dropbox.os
Normal file
294
OInt/core/Modules/OPI_Dropbox.os
Normal file
@ -0,0 +1,294 @@
|
|||||||
|
// Расположение OS: ./OInt/core/Modules/OPI_Dropbox.os
|
||||||
|
// Библиотека: Dropbox
|
||||||
|
// Команда CLI: dropbox
|
||||||
|
|
||||||
|
// MIT License
|
||||||
|
|
||||||
|
// Copyright (c) 2023 Anton Tsitavets
|
||||||
|
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||||
|
|
||||||
|
// BSLLS:IncorrectLineBreak-off
|
||||||
|
|
||||||
|
// Раскомментировать, если выполняется OneScript
|
||||||
|
#Использовать "../../tools"
|
||||||
|
|
||||||
|
#Область ПрограммныйИнтерфейс
|
||||||
|
|
||||||
|
#Область Авторизация
|
||||||
|
|
||||||
|
// Получить ссылку авторизации
|
||||||
|
// Генерирует ссылку авторизации для перехода в браузере
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// КлючПриложения - Строка - Ключ приложения - appkey
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Строка - URL для перехода в браузере
|
||||||
|
Функция ПолучитьСсылкуАвторизации(Знач КлючПриложения) Экспорт
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(КлючПриложения);
|
||||||
|
Возврат "https://www.dropbox.com/oauth2/authorize?client_id="
|
||||||
|
+ КлючПриложения
|
||||||
|
+ "&response_type=code&token_access_type=offline";
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Получить токен
|
||||||
|
// Полеучает токен на основе кода со страницы ПолучитьСсылкуАвторизации
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// КлючПриложения - Строка - Ключ приложения - appkey
|
||||||
|
// СекретПриложения - Строка - Секрет приложения - appsecret
|
||||||
|
// Код - Строка - Код со страницы авторизации - code
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
||||||
|
Функция ПолучитьТокен(Знач КлючПриложения, Знач СекретПриложения, Знач Код) Экспорт
|
||||||
|
|
||||||
|
URL = "https://api.dropbox.com/oauth2/token";
|
||||||
|
ТипДанных = "application/x-www-form-urlencoded; charset=utf-8";
|
||||||
|
|
||||||
|
Параметры = Новый Структура;
|
||||||
|
OPI_Инструменты.ДобавитьПоле("code" , Код , "Строка", Параметры);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("grant_type", "authorization_code", "Строка", Параметры);
|
||||||
|
|
||||||
|
СтруктураURL = OPI_Инструменты.РазбитьURL(URL);
|
||||||
|
Сервер = СтруктураURL["Сервер"];
|
||||||
|
Адрес = СтруктураURL["Адрес"];
|
||||||
|
|
||||||
|
Запрос = OPI_Инструменты.СоздатьЗапрос(Адрес, , ТипДанных);
|
||||||
|
Соединение = OPI_Инструменты.СоздатьСоединение(Сервер, КлючПриложения, СекретПриложения);
|
||||||
|
|
||||||
|
СтрокаПараметров = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
|
Данные = Прав(СтрокаПараметров, СтрДлина(СтрокаПараметров) - 1);
|
||||||
|
|
||||||
|
Запрос.УстановитьТелоИзСтроки(Данные);
|
||||||
|
|
||||||
|
Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);
|
||||||
|
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Обновить токен
|
||||||
|
// Получает новый токен на основе рефреш токена
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// КлючПриложения - Строка - Ключ приложения - appkey
|
||||||
|
// СекретПриложения - Строка - Секрет приложения - appsecret
|
||||||
|
// РефрешТокен - Строка - Рефреш токен - refresh
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
||||||
|
Функция ОбновитьТокен(Знач КлючПриложения, Знач СекретПриложения, Знач РефрешТокен) Экспорт
|
||||||
|
|
||||||
|
URL = "https://api.dropbox.com/oauth2/token";
|
||||||
|
|
||||||
|
Параметры = Новый Структура;
|
||||||
|
OPI_Инструменты.ДобавитьПоле("refresh_token", РефрешТокен , "Строка", Параметры);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("grant_type" , "refresh_token" , "Строка", Параметры);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("client_id" , КлючПриложения , "Строка", Параметры);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("client_secret", СекретПриложения, "Строка", Параметры);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, Параметры, , Ложь);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область РаботаСФайлами
|
||||||
|
|
||||||
|
// Загрузить файл
|
||||||
|
// Загружает файл на облачный диск
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен - token
|
||||||
|
// Файл - Строка, ДвоичныеДанные - Данные файл для загрузки - file
|
||||||
|
// Путь - Строка - Путь сохранения на Dropbox - path
|
||||||
|
// Перезаписывать - Булево - Перезаписывать файл при конфликте путей - overwrite
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
||||||
|
Функция ЗагрузитьФайл(Знач Токен, Знач Файл, Знач Путь, Знач Перезаписывать = Ложь) Экспорт
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Перезаписывать);
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
|
|
||||||
|
Режим = ?(Перезаписывать, "overwrite", "add");
|
||||||
|
Размер = Файл.Размер();
|
||||||
|
Граница = 100000000;
|
||||||
|
|
||||||
|
Если Размер > Граница Тогда
|
||||||
|
Ответ = ЗагрузитьБольшойФайл(Токен, Файл, Путь, Режим);
|
||||||
|
Иначе
|
||||||
|
Ответ = ЗагрузитьМалыйФайл(Токен, Файл, Путь, Режим);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция УдалитьФайл(Знач Токен, Знач Путь) Экспорт
|
||||||
|
|
||||||
|
URL = "https://api.dropboxapi.com/2/files/delete_v2";
|
||||||
|
|
||||||
|
Параметры = Новый Структура;
|
||||||
|
OPI_Инструменты.ДобавитьПоле("path", Путь, "Строка", Параметры);
|
||||||
|
|
||||||
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
Функция ПолучитьЗаголовкиЗапроса(Знач Токен, Знач Параметры = "")
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
|
|
||||||
|
Заголовки = Новый Соответствие;
|
||||||
|
Заголовки.Вставить("Authorization" , "Bearer " + Токен);
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(Параметры) Тогда
|
||||||
|
|
||||||
|
JSON = OPI_Инструменты.JSONСтрокой(Параметры, "Нет");
|
||||||
|
JSON = СтрЗаменить(JSON, Символы.ВК + Символы.ПС, "");
|
||||||
|
|
||||||
|
Заголовки.Вставить("Dropbox-API-Arg", JSON);
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Заголовки;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ЗагрузитьБольшойФайл(Знач Токен, Знач Файл, Знач Путь, Знач Режим)
|
||||||
|
|
||||||
|
URL = "https://content.dropboxapi.com/2/files/upload_session/append_v2";
|
||||||
|
|
||||||
|
РазмерЧасти = 100000000;
|
||||||
|
ТекущаяПозиция = 0;
|
||||||
|
ПрочитаноБайт = 0;
|
||||||
|
ОбщийРазмер = Файл.Размер();
|
||||||
|
Сессия = ОткрытьСессию(Токен);
|
||||||
|
|
||||||
|
Пока ПрочитаноБайт < ОбщийРазмер Цикл
|
||||||
|
|
||||||
|
Отступ = ТекущаяПозиция;
|
||||||
|
Курсор = Новый Структура("offset,session_id", Отступ, Сессия);
|
||||||
|
|
||||||
|
Параметры = Новый Структура("cursor", Курсор);
|
||||||
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен, Параметры);
|
||||||
|
|
||||||
|
ЧтениеДанных = Новый ЧтениеДанных(Файл);
|
||||||
|
ПрочитаноБайт = ЧтениеДанных.Пропустить(ТекущаяПозиция);
|
||||||
|
Результат = ЧтениеДанных.Прочитать(РазмерЧасти);
|
||||||
|
ТекущиеДанные = Результат.ПолучитьДвоичныеДанные();
|
||||||
|
РазмерТекущих = ТекущиеДанные.Размер();
|
||||||
|
СледующаяПозиция = ТекущаяПозиция + РазмерТекущих;
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(ТекущиеДанные) Тогда
|
||||||
|
Прервать;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.PostBinary(URL, ТекущиеДанные, Заголовки);
|
||||||
|
|
||||||
|
ТекущаяПозиция = СледующаяПозиция;
|
||||||
|
|
||||||
|
КБайт = 1024;
|
||||||
|
МБайт = КБайт * КБайт;
|
||||||
|
Сообщить(OPI_Инструменты.ИнформацияОПрогрессе(ТекущаяПозиция, ОбщийРазмер, "МБ", МБайт));
|
||||||
|
|
||||||
|
ВыполнитьСборкуМусора();
|
||||||
|
ОсвободитьОбъект(ТекущиеДанные);
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Ответ = ЗакрытьСессию(Токен, Путь, Режим, ОбщийРазмер, Сессия);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ЗагрузитьМалыйФайл(Знач Токен, Знач Файл, Знач Путь, Знач Режим)
|
||||||
|
|
||||||
|
URL = "https://content.dropboxapi.com/2/files/upload";
|
||||||
|
|
||||||
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
|
OPI_Инструменты.ДобавитьПоле("autorename" , Ложь , "Булево", Параметры);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("mode" , Режим, "Строка", Параметры);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("mute" , Ложь , "Булево", Параметры);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("path" , Путь , "Строка", Параметры);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("strict_conflict", Ложь , "Булево", Параметры);
|
||||||
|
|
||||||
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен, Параметры);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.PostBinary(URL, Файл, Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ОткрытьСессию(Знач Токен)
|
||||||
|
|
||||||
|
SessionId = "session_id";
|
||||||
|
URL = "https://content.dropboxapi.com/2/files/upload_session/start";
|
||||||
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.PostBinary(URL, ПолучитьДвоичныеДанныеИзСтроки(""), Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ[SessionId];
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ЗакрытьСессию(Знач Токен, Знач Путь, Знач Режим, Знач ОбщийРазмер, Знач Сессия)
|
||||||
|
|
||||||
|
URL = "https://content.dropboxapi.com/2/files/upload_session/finish";
|
||||||
|
|
||||||
|
Коммит = Новый Структура();
|
||||||
|
OPI_Инструменты.ДобавитьПоле("mode", Режим, "Строка", Коммит);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("path", Путь, "Строка", Коммит);
|
||||||
|
|
||||||
|
Курсор = Новый Структура("offset,session_id", ОбщийРазмер, Сессия);
|
||||||
|
|
||||||
|
Параметры = Новый Структура("commit,cursor", Коммит, Курсор);
|
||||||
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен, Параметры);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.PostBinary(URL, ПолучитьДвоичныеДанныеИзСтроки(""), Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
@ -1,19 +1,20 @@
|
|||||||
<package-def>
|
<package-def>
|
||||||
<module name="OPI_GoogleCalendar" file="core/Modules/OPI_GoogleCalendar.os"/>
|
<module name="OPI_GoogleCalendar" file="core/Modules/OPI_GoogleCalendar.os"/>
|
||||||
<module name="OPI_Airtable" file="core/Modules/OPI_Airtable.os"/>
|
|
||||||
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
|
|
||||||
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
|
|
||||||
<module name="OPI_Viber" file="core/Modules/OPI_Viber.os"/>
|
|
||||||
<module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
|
|
||||||
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
|
|
||||||
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.os"/>
|
|
||||||
<module name="OPI_ПолучениеДанныхТестов" file="tools/Modules/OPI_ПолучениеДанныхТестов.os"/>
|
|
||||||
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
|
|
||||||
<module name="OPI_ПреобразованиеТипов" file="tools/Modules/OPI_ПреобразованиеТипов.os"/>
|
|
||||||
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
|
|
||||||
<module name="OPI_YandexDisk" file="core/Modules/OPI_YandexDisk.os"/>
|
|
||||||
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
|
|
||||||
<module name="OPI_Инструменты" file="tools/Modules/internal/Modules/OPI_Инструменты.os"/>
|
<module name="OPI_Инструменты" file="tools/Modules/internal/Modules/OPI_Инструменты.os"/>
|
||||||
|
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
|
||||||
|
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
|
||||||
|
<module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
|
||||||
|
<module name="OPI_ПолучениеДанныхТестов" file="tools/Modules/OPI_ПолучениеДанныхТестов.os"/>
|
||||||
|
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
|
||||||
|
<module name="OPI_Viber" file="core/Modules/OPI_Viber.os"/>
|
||||||
|
<module name="OPI_ПреобразованиеТипов" file="tools/Modules/OPI_ПреобразованиеТипов.os"/>
|
||||||
|
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
|
||||||
|
<module name="OPI_YandexDisk" file="core/Modules/OPI_YandexDisk.os"/>
|
||||||
|
<module name="OPI_Dropbox" file="core/Modules/OPI_Dropbox.os"/>
|
||||||
|
<module name="OPI_Airtable" file="core/Modules/OPI_Airtable.os"/>
|
||||||
|
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
|
||||||
|
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
|
||||||
|
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.os"/>
|
||||||
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
|
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
|
||||||
<module name="OPI_Криптография" file="tools/Modules/internal/Modules/OPI_Криптография.os"/>
|
<module name="OPI_Криптография" file="tools/Modules/internal/Modules/OPI_Криптография.os"/>
|
||||||
</package-def>
|
</package-def>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -59,6 +59,7 @@
|
|||||||
Разделы.Вставить("Notion" , СтандартныеЗависимости);
|
Разделы.Вставить("Notion" , СтандартныеЗависимости);
|
||||||
Разделы.Вставить("Slack" , СтандартныеЗависимости);
|
Разделы.Вставить("Slack" , СтандартныеЗависимости);
|
||||||
Разделы.Вставить("Airtable" , СтандартныеЗависимости);
|
Разделы.Вставить("Airtable" , СтандартныеЗависимости);
|
||||||
|
Разделы.Вставить("Dropbox" , СтандартныеЗависимости);
|
||||||
|
|
||||||
Возврат Разделы;
|
Возврат Разделы;
|
||||||
|
|
||||||
@ -78,6 +79,7 @@
|
|||||||
Слак = "Slack";
|
Слак = "Slack";
|
||||||
Таблицы = "GoogleSheets";
|
Таблицы = "GoogleSheets";
|
||||||
АирТ = "Airtable";
|
АирТ = "Airtable";
|
||||||
|
ДропБокс = "Dropbox";
|
||||||
|
|
||||||
ТаблицаТестов = Новый ТаблицаЗначений;
|
ТаблицаТестов = Новый ТаблицаЗначений;
|
||||||
ТаблицаТестов.Колонки.Добавить("Метод");
|
ТаблицаТестов.Колонки.Добавить("Метод");
|
||||||
@ -87,7 +89,6 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьИнформациюБота" , "Получить информацию бота" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьИнформациюБота" , "Получить информацию бота" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьОбновления" , "Получить обновления" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьОбновления" , "Получить обновления" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_УстановитьWebhook" , "Установить Webhook" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_УстановитьWebhook" , "Установить Webhook" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_УдалитьWebhook" , "Удалить Webhook" , Телеграм);
|
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьТекстовоеСообщение" , "Отправить текстовое сообщение" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьТекстовоеСообщение" , "Отправить текстовое сообщение" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьКартинку" , "Отправить картинку" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьКартинку" , "Отправить картинку" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьВидео" , "Отправить видео" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьВидео" , "Отправить видео" , Телеграм);
|
||||||
@ -105,7 +106,6 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьЧислоУчастников" , "Получить число участников" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьЧислоУчастников" , "Получить число участников" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьСписокАватаровФорума", "Получить список аватаров форума", Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьСписокАватаровФорума", "Получить список аватаров форума", Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_СоздатьУдалитьТемуФорума" , "Создать/Удалить тему форума" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_СоздатьУдалитьТемуФорума" , "Создать/Удалить тему форума" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_ОткрытьЗакрытьГлавнуюТему" , "Открыть/Закрыть главную тему" , Телеграм);
|
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_ИзменитьИмяГлавнойТемы" , "Изменить имя главной темы" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ИзменитьИмяГлавнойТемы" , "Изменить имя главной темы" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_СкрытьПоказатьГлавнуюТему" , "Скрыть/Показать главную тему" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_СкрытьПоказатьГлавнуюТему" , "Скрыть/Показать главную тему" , Телеграм);
|
||||||
|
|
||||||
@ -205,7 +205,10 @@
|
|||||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьТаблицу" , "Создать/Изменить таблицу" , АирТ);
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьТаблицу" , "Создать/Изменить таблицу" , АирТ);
|
||||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьПоле" , "Создать/Изменить поле" , АирТ);
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьПоле" , "Создать/Изменить поле" , АирТ);
|
||||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьУдалитьЗаписи" , "Создать/Удалить записи" , АирТ);
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьУдалитьЗаписи" , "Создать/Удалить записи" , АирТ);
|
||||||
|
|
||||||
|
НовыйТест(ТаблицаТестов, "ДропБокс_ПолучитьОбновитьТокен" , "Получить/Обновить токен" , ДропБокс);
|
||||||
|
НовыйТест(ТаблицаТестов, "ДропБокс_ЗагрузитьФайл" , "Загрузить файл" , ДропБокс);
|
||||||
|
|
||||||
Возврат ТаблицаТестов;
|
Возврат ТаблицаТестов;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -317,6 +320,20 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ПараметрВКоллекцию(Параметр, Коллекция) Экспорт
|
||||||
|
|
||||||
|
Значение = ПолучитьПараметр(Параметр);
|
||||||
|
Коллекция.Вставить(Параметр, Значение);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ДвоичныеВКоллекцию(Параметр, Коллекция) Экспорт
|
||||||
|
|
||||||
|
Значение = ПолучитьДвоичные(Параметр);
|
||||||
|
Коллекция.Вставить(Параметр, Значение);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ЗаписатьПараметр(Параметр, Значение) Экспорт
|
Процедура ЗаписатьПараметр(Параметр, Значение) Экспорт
|
||||||
|
|
||||||
Путь = ПутьКФайлуДанных();
|
Путь = ПутьКФайлуДанных();
|
||||||
|
@ -85,6 +85,12 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Функция PostBinary(Знач URL, Знач Тело, Знач ДопЗаголовки, Знач ПолныйОтвет = Ложь) Экспорт
|
||||||
|
|
||||||
|
Возврат ВыполнитьЗапросСДвоичнымиДанными(URL, "POST", Тело, ДопЗаголовки, ПолныйОтвет);
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область ЗапросыMultipart
|
#Область ЗапросыMultipart
|
||||||
@ -171,6 +177,43 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Функция СоздатьЗапрос(Знач Адрес, Знач ДопЗаголовки = "", Знач ТипДанных = "") Экспорт
|
||||||
|
|
||||||
|
Заголовки = Новый Соответствие;
|
||||||
|
Заголовки.Вставить("Accept-Encoding", "gzip");
|
||||||
|
Заголовки.Вставить("Accept" , "*/*");
|
||||||
|
Заголовки.Вставить("Connection" , "keep-alive");
|
||||||
|
Заголовки.Вставить("Accept-Charset" , "utf-8");
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(ТипДанных) Тогда
|
||||||
|
Заголовки.Вставить("Content-Type", ТипДанных);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ТипЗнч(ДопЗаголовки) = Тип("Соответствие") Тогда
|
||||||
|
|
||||||
|
Для Каждого Заголовок Из ДопЗаголовки Цикл
|
||||||
|
Заголовки.Вставить(Заголовок.Ключ, Заголовок.Значение);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
НовыйЗапрос = Новый HTTPЗапрос(Адрес, Заголовки);
|
||||||
|
|
||||||
|
Возврат НовыйЗапрос;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция СоздатьСоединение(Знач Сервер, Знач Пользователь = "", Знач Пароль = "") Экспорт
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
SSL = Новый ЗащищенноеСоединениеOpenSSL;
|
||||||
|
Возврат Новый HTTPСоединение(Сервер, 443, Пользователь, Пароль, , 3000, SSL);
|
||||||
|
Исключение
|
||||||
|
Возврат Новый HTTPСоединение(Сервер, 443, Пользователь, Пароль, , 3000);
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -259,7 +302,7 @@
|
|||||||
ЗаписьJSON = Новый ЗаписьJSON;
|
ЗаписьJSON = Новый ЗаписьJSON;
|
||||||
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
|
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
|
||||||
|
|
||||||
ЗаписатьJSON(ЗаписьJSON, Данные);
|
ЗаписатьJSON(ЗаписьJSON, Данные,);
|
||||||
Возврат ЗаписьJSON.Закрыть();
|
Возврат ЗаписьJSON.Закрыть();
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
@ -313,7 +356,11 @@
|
|||||||
ОТД = Новый ОписаниеТипов("Дата");
|
ОТД = Новый ОписаниеТипов("Дата");
|
||||||
Дата = ОТД.ПривестиЗначение(Дата);
|
Дата = ОТД.ПривестиЗначение(Дата);
|
||||||
|
|
||||||
Возврат Формат(Дата - Дата(1970, 1, 1, 1, 0, 0), "ЧЦ=10; ЧДЦ=0; ЧГ=0");
|
UNIX = Формат(Дата - Дата(1970, 1, 1, 1, 0, 0), "ЧЦ=10; ЧДЦ=0; ЧГ=0");
|
||||||
|
UNIX = СтрЗаменить(UNIX, ",", "");
|
||||||
|
UNIX = Лев(UNIX, 10);
|
||||||
|
|
||||||
|
Возврат UNIX;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
@ -490,6 +537,33 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ВыполнитьЗапросСДвоичнымиДанными(Знач URL, Знач Вид, Знач Данные, Знач ДопЗаголовки, Знач ПолныйОтвет)
|
||||||
|
|
||||||
|
СтруктураURL = РазбитьURL(URL);
|
||||||
|
Сервер = СтруктураURL["Сервер"];
|
||||||
|
Адрес = СтруктураURL["Адрес"];
|
||||||
|
|
||||||
|
Запрос = СоздатьЗапрос(Адрес, ДопЗаголовки, "application/octet-stream");
|
||||||
|
Соединение = СоздатьСоединение(Сервер);
|
||||||
|
|
||||||
|
Запрос.УстановитьТелоИзДвоичныхДанных(Данные);
|
||||||
|
|
||||||
|
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос);
|
||||||
|
|
||||||
|
Если ЭтоПереадресация(Ответ) Тогда
|
||||||
|
Ответ = ВыполнитьЗапросСДвоичнымиДанными(Ответ.Заголовки["Location"]
|
||||||
|
, Вид
|
||||||
|
, Данные
|
||||||
|
, ДопЗаголовки
|
||||||
|
, ПолныйОтвет);
|
||||||
|
Иначе
|
||||||
|
ОбработатьОтвет(Ответ, ПолныйОтвет);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
Функция ВыполнитьЗапросБезТела(Знач URL
|
Функция ВыполнитьЗапросБезТела(Знач URL
|
||||||
, Знач Вид
|
, Знач Вид
|
||||||
, Знач Параметры = ""
|
, Знач Параметры = ""
|
||||||
@ -661,43 +735,6 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СоздатьЗапрос(Знач Адрес, Знач ДопЗаголовки = "", Знач ТипДанных = "")
|
|
||||||
|
|
||||||
Заголовки = Новый Соответствие;
|
|
||||||
Заголовки.Вставить("Accept-Encoding", "gzip");
|
|
||||||
Заголовки.Вставить("Accept" , "*/*");
|
|
||||||
Заголовки.Вставить("Connection" , "keep-alive");
|
|
||||||
Заголовки.Вставить("Accept-Charset" , "utf-8");
|
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(ТипДанных) Тогда
|
|
||||||
Заголовки.Вставить("Content-Type", ТипДанных);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Если ТипЗнч(ДопЗаголовки) = Тип("Соответствие") Тогда
|
|
||||||
|
|
||||||
Для Каждого Заголовок Из ДопЗаголовки Цикл
|
|
||||||
Заголовки.Вставить(Заголовок.Ключ, Заголовок.Значение);
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
НовыйЗапрос = Новый HTTPЗапрос(Адрес, Заголовки);
|
|
||||||
|
|
||||||
Возврат НовыйЗапрос;
|
|
||||||
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
Функция СоздатьСоединение(Знач Сервер)
|
|
||||||
|
|
||||||
Попытка
|
|
||||||
SSL = Новый ЗащищенноеСоединениеOpenSSL;
|
|
||||||
Возврат Новый HTTPСоединение(Сервер, 443, , , , 3000, SSL);
|
|
||||||
Исключение
|
|
||||||
Возврат Новый HTTPСоединение(Сервер, 443, , , , 3000);
|
|
||||||
КонецПопытки;
|
|
||||||
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
Функция ЭтоПереадресация(Знач Ответ)
|
Функция ЭтоПереадресация(Знач Ответ)
|
||||||
|
|
||||||
Переадресация = 300;
|
Переадресация = 300;
|
||||||
|
Loading…
Reference in New Issue
Block a user