sendfile simple small files usermessage implementation
This commit is contained in:
parent
a2d4106d51
commit
bf901a7aa3
@ -14,7 +14,7 @@ type Config struct {
|
|||||||
StoragePath string `json:"storage_path,omitempty"`
|
StoragePath string `json:"storage_path,omitempty"`
|
||||||
MaxIdsPerUser int `json:"max_ids_per_user,omitempty"`
|
MaxIdsPerUser int `json:"max_ids_per_user,omitempty"`
|
||||||
MsgDbRollingPeriod int `json:"msg_db_rolling_period,omitempty"`
|
MsgDbRollingPeriod int `json:"msg_db_rolling_period,omitempty"`
|
||||||
Chunksize int `json:"chunksize,omitempty"`
|
Chunksize int64 `json:"chunksize,omitempty"`
|
||||||
ServerPollInterval int `json:"server_poll_interval,omitempty"`
|
ServerPollInterval int `json:"server_poll_interval,omitempty"`
|
||||||
// GUI
|
// GUI
|
||||||
LastOpenChat string `json:"last_open_chat,omitempty"`
|
LastOpenChat string `json:"last_open_chat,omitempty"`
|
||||||
|
39
message.go
39
message.go
@ -1,5 +1,42 @@
|
|||||||
package meowlib
|
package meowlib
|
||||||
|
|
||||||
func (*UserMessage) addFile(filename string) {
|
import (
|
||||||
|
"errors"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/google/uuid"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (msg *UserMessage) AddFile(filename string, maxMessageSize int64) error {
|
||||||
|
fi, err := os.Stat(filename)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if fi.Size() > maxMessageSize {
|
||||||
|
return errors.New("Cannot add file, file bigger than messge size")
|
||||||
|
}
|
||||||
|
var totalsize int64
|
||||||
|
totalsize = 0
|
||||||
|
for _, f := range msg.Files {
|
||||||
|
totalsize += int64(f.Size)
|
||||||
|
}
|
||||||
|
totalsize += fi.Size()
|
||||||
|
if totalsize > maxMessageSize {
|
||||||
|
return errors.New("Cannot add file, too many files, max message size exceeded")
|
||||||
|
}
|
||||||
|
data, err := os.ReadFile(filename)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var file File
|
||||||
|
file.Filename = filename
|
||||||
|
file.Size = uint64(fi.Size())
|
||||||
|
file.Data = data
|
||||||
|
msg.Files = append(msg.Files, &file)
|
||||||
|
|
||||||
|
msg.Status = &UserMessage_ConversationStatus{}
|
||||||
|
msg.Status.LocalUuid = uuid.New().String()
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user