Skip to content

Commit dfd80ba

Browse files
committed
upd
1 parent 77e6245 commit dfd80ba

File tree

3 files changed

+52
-20
lines changed

3 files changed

+52
-20
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[![Foo](https://img.shields.io/badge/Version-2.14-brightgreen.svg?style=flat-square)](#versions)
1+
[![Foo](https://img.shields.io/badge/Version-2.15-brightgreen.svg?style=flat-square)](#versions)
22
[![Foo](https://img.shields.io/badge/Website-AlexGyver.ru-blue.svg?style=flat-square)](https://alexgyver.ru/)
33
[![Foo](https://img.shields.io/badge/%E2%82%BD$%E2%82%AC%20%D0%9D%D0%B0%20%D0%BF%D0%B8%D0%B2%D0%BE-%D1%81%20%D1%80%D1%8B%D0%B1%D0%BA%D0%BE%D0%B9-orange.svg?style=flat-square)](https://alexgyver.ru/support_alex/)
44

@@ -639,6 +639,7 @@ void loop() {
639639
- v2.12: поправлены примеры, исправлен парсинг isBot, переделан механизм защиты от длинных сообщений, переделана инициализация
640640
- v2.13: Оптимизация памяти. Добавил OTA обновление
641641
- v2.14: Улучшен парсинг строки с ID, добавил отключение OTA, добавил парсинг названия группы/канала в username
642+
- v2.15: Заплатка для кривой библиотеки ESP32
642643

643644
<a id="feedback"></a>
644645
## Баги и обратная связь

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=FastBot
2-
version=2.14
2+
version=2.15
33
author=AlexGyver <[email protected]>
44
maintainer=AlexGyver <[email protected]>
55
sentence=Simple library for Telegram bot (messages and menus)

src/FastBot.h

Lines changed: 49 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
v2.12: поправлены примеры, исправлен парсинг isBot, переделан механизм защиты от длинных сообщений, переделана инициализация
8181
v2.13: Оптимизация памяти. Добавил OTA обновление
8282
v2.14: Улучшен парсинг строки с ID, добавил отключение OTA, добавил парсинг названия группы/канала в username
83+
v2.15: Заплатка для кривой библиотеки ESP32
8384
*/
8485

8586
/*
@@ -117,33 +118,36 @@
117118
#endif
118119
#include <WiFiClientSecure.h>
119120
#include <WiFiClientSecureBearSSL.h>
120-
static BearSSL::WiFiClientSecure _FB_client;
121-
static HTTPClient _FB_http;
122-
121+
BearSSL::WiFiClientSecure _FB_client;
123122
#else // ESP32
124123
#include <WiFi.h>
125124
#include <HTTPClient.h>
126125
#ifndef FB_NO_OTA
127126
#include <HTTPUpdate.h>
128127
#endif
129128
#include <WiFiClientSecure.h>
130-
WiFiClientSecure _FB_client;
131-
static HTTPClient _FB_http;
132129
#endif
133130

134131
// ================================
135132
class FastBot {
136133
public:
137134
// инициализация (токен, макс кол-во сообщений на запрос, макс символов, период)
138135
FastBot(String token = "", uint16_t limit = 10, uint16_t ovf = 0, uint16_t period = 3600) {
136+
_http = new HTTPClient;
139137
_token.reserve(46);
140138
chatIDs.reserve(10);
141139
_token = token;
142140
_limit = limit;
143141
_ovf = ovf;
144142
_prd = period;
145143
setBufferSizes(512, 512);
144+
#ifdef ESP8266
146145
_FB_client.setInsecure();
146+
#endif
147+
}
148+
149+
~FastBot() {
150+
if (_http) delete _http;
147151
}
148152

149153
// ===================== НАСТРОЙКИ =====================
@@ -210,9 +214,18 @@ class FastBot {
210214
req += ID;
211215
//req += F("&allowed_updates=[\"update_id\",\"message\",\"edited_message\",\"channel_post\",\"edited_channel_post\",\"callback_query\"]");
212216

213-
if (!_FB_http.begin(_FB_client, req)) return 4; // ошибка подключения
214-
if (_FB_http.GET() != HTTP_CODE_OK) {
215-
_FB_http.end();
217+
#ifdef ESP8266
218+
if (!_http->begin(_FB_client, req)) return 4; // ошибка подключения
219+
#else
220+
if (!_http->begin(req)) return 4; // ошибка подключения
221+
#endif
222+
int answ = _http->GET();
223+
if (answ != HTTP_CODE_OK) {
224+
_http->end();
225+
if (answ == -1 && _http) { // заплатка для есп32
226+
delete _http;
227+
_http = new HTTPClient;
228+
}
216229
return 3; // ошибка сервера телеграм
217230
}
218231

@@ -229,18 +242,18 @@ class FastBot {
229242
}
230243
#endif
231244

232-
int size = _FB_http.getSize();
245+
int size = _http->getSize();
233246
ovfFlag = size > 25000; // 1 полное сообщение на русском языке или ~5 на английском
234247
uint8_t status = 1; // OK
235248
if (size) { // не пустой ответ?
236249
StreamString sstring;
237250
if (!ovfFlag && sstring.reserve(size + 1)) { // не переполнен и хватает памяти
238-
_FB_http.writeToStream(&sstring); // копируем
239-
_FB_http.end(); // завершаем
251+
_http->writeToStream(&sstring); // копируем
252+
_http->end(); // завершаем
240253
return parseMessages(sstring); // парсим
241254
} else status = 2; // переполнение
242255
} else status = 3; // пустой ответ
243-
_FB_http.end();
256+
_http->end();
244257
return status;
245258
}
246259

@@ -644,12 +657,29 @@ class FastBot {
644657
}
645658

646659
uint8_t sendRequest(String& req) {
647-
if (!_FB_http.begin(_FB_client, req)) return 4; // ошибка подключения
660+
#ifdef ESP8266
661+
if (!_http->begin(_FB_client, req)) return 4; // ошибка подключения
662+
#else
663+
if (!_http->begin(req)) return 4;
664+
#endif
665+
int answ = _http->GET();
666+
if (answ == -1 && _http) { // заплатка для есп32
667+
_http->end();
668+
delete _http;
669+
_http = new HTTPClient;
670+
// постучимся ещё раз
671+
#ifdef ESP8266
672+
if (!_http->begin(_FB_client, req)) return 4; // ошибка подключения
673+
#else
674+
if (!_http->begin(req)) return 4;
675+
#endif
676+
answ = _http->GET();
677+
}
648678
uint8_t status = 1;
649-
if (_FB_http.GET() == HTTP_CODE_OK && _FB_http.getSize()) { // есть ответ и он не пустой
650-
parseRequest(_FB_http.getString()); // парсим
651-
} else status = 3; // некорректный ответ
652-
_FB_http.end();
679+
if (answ == HTTP_CODE_OK && _http->getSize()) { // есть ответ и он не пустой
680+
parseRequest(_http->getString()); // парсим
681+
} else status = 3; // некорректный ответ
682+
_http->end();
653683
return status;
654684
}
655685

@@ -914,7 +944,8 @@ class FastBot {
914944
}
915945
#endif
916946
}
917-
947+
948+
HTTPClient *_http = nullptr;
918949
void (*_callback)(FB_msg& msg) = nullptr;
919950
String _token;
920951
String _otaID;

0 commit comments

Comments
 (0)