@@ -28,10 +28,12 @@ enum class Poll : uint8_t {
28
28
class Core : public Http {
29
29
protected:
30
30
#ifdef __AVR__
31
+ typedef void (*CallbackError)(Text text);
31
32
typedef void (*CallbackRaw)(Text response);
32
33
typedef void (*CallbackResult)(gson::Entry& entry);
33
34
typedef void (*CallbackUpdate)(Update& upd);
34
35
#else
36
+ typedef std::function<void (Text text)> CallbackError;
35
37
typedef std::function<void (Text response)> CallbackRaw;
36
38
typedef std::function<void (gson::Entry& entry)> CallbackResult;
37
39
typedef std::function<void (Update& upd)> CallbackUpdate;
@@ -188,6 +190,17 @@ class Core : public Http {
188
190
void detachRaw () {
189
191
_cbRaw = nullptr ;
190
192
}
193
+
194
+ // подключить обработчик ошибки сервера void cb(Text error) {}
195
+ void attachError (CallbackError callback) {
196
+ _cbErr = callback;
197
+ }
198
+
199
+ // отключить обработчик ошибки
200
+ void detachError () {
201
+ _cbErr = nullptr ;
202
+ }
203
+
191
204
// ============================== TICK ==============================
192
205
// тикер, вызывать в loop. Вернёт true, если был обработан Update
193
206
bool tick () {
@@ -399,6 +412,7 @@ class Core : public Http {
399
412
CallbackUpdate _cbUpdate = nullptr ;
400
413
CallbackResult _cbResult = nullptr ;
401
414
CallbackRaw _cbRaw = nullptr ;
415
+ CallbackError _cbErr = nullptr ;
402
416
403
417
#ifndef FB_NO_FILE
404
418
ota_t _ota = ota_t ::None;
@@ -422,8 +436,11 @@ class Core : public Http {
422
436
thisBot = nullptr ;
423
437
}
424
438
if (res.isObject ()) _parseResult (res);
439
+ } else {
440
+ if (_cbErr && res._parser [tg_apih::ok]) _cbErr (res._parser [tg_apih::description]);
425
441
}
426
442
return res;
443
+
427
444
} else if (resp.type () == F (" application/octet-stream" )) {
428
445
FB_LOG (" got file" );
429
446
return Result (resp.body ());
0 commit comments