]> git.r.bdr.sh - rbdr/mobius/blob - hotline/file_header.go
Upload example dialog
[rbdr/mobius] / hotline / file_header.go
1 package hotline
2
3 import (
4 "encoding/binary"
5 "github.com/jhalter/mobius/concat"
6 )
7
8 type FileHeader struct {
9 Size []byte // Total size of FileHeader payload
10 Type []byte // 0 for file, 1 for dir
11 FilePath []byte // encoded file path
12 }
13
14 func NewFileHeader(fileName string, isDir bool) FileHeader {
15 fh := FileHeader{
16 Size: make([]byte, 2),
17 Type: []byte{0x00, 0x00},
18 FilePath: EncodeFilePath(fileName),
19 }
20 if isDir {
21 fh.Type = []byte{0x00, 0x01}
22 }
23
24 encodedPathLen := uint16(len(fh.FilePath) + len(fh.Type))
25 binary.BigEndian.PutUint16(fh.Size, encodedPathLen)
26
27 return fh
28 }
29
30 func (fh *FileHeader) Payload() []byte {
31 return concat.Slices(
32 fh.Size,
33 fh.Type,
34 fh.FilePath,
35 )
36 }