添加获取热存储对象的方法

This commit is contained in:
eatMoreApple 2021-08-04 15:39:03 +08:00
parent 0d72f37d31
commit 3e14a0d5ed
2 changed files with 295 additions and 281 deletions

15
bot.go
View File

@ -1,7 +1,6 @@
package openwechat
import (
"bytes"
"context"
"encoding/json"
"errors"
@ -67,19 +66,15 @@ func (b *Bot) HotLogin(storage HotReloadStorage, retry ...bool) error {
// 如果load出错了,就执行正常登陆逻辑
// 第一次没有数据load都会出错的
var buffer bytes.Buffer
if _, err := buffer.ReadFrom(storage); err != nil {
item, err := NewHotReloadStorageItem(storage)
if err != nil {
return b.Login()
}
defer b.HotReloadStorage.Close()
var item HotReloadStorageItem
defer storage.Close()
if err = json.NewDecoder(&buffer).Decode(&item); err != nil {
return err
}
if err = b.hotLoginInit(item); err != nil {
if err = b.hotLoginInit(*item); err != nil {
return err
}

View File

@ -1,6 +1,9 @@
package openwechat
import (
"bytes"
"encoding/json"
"errors"
"io"
"net/http"
"os"
@ -60,3 +63,19 @@ func NewJsonFileHotReloadStorage(filename string) HotReloadStorage {
}
var _ HotReloadStorage = &JsonFileHotReloadStorage{}
func NewHotReloadStorageItem(storage HotReloadStorage) (*HotReloadStorageItem, error) {
if storage == nil {
return nil, errors.New("storage can't be nil")
}
var buffer bytes.Buffer
if _, err := buffer.ReadFrom(storage); err != nil {
return nil, err
}
var item HotReloadStorageItem
if err := json.NewDecoder(&buffer).Decode(&item); err != nil {
return nil, err
}
return &item, nil
}