]> git.r.bdr.sh - rbdr/mobius/blame - hotline/field.go
Update Docker instructions
[rbdr/mobius] / hotline / field.go
CommitLineData
6988a057
JH
1package hotline
2
3import (
4 "encoding/binary"
5 "github.com/jhalter/mobius/concat"
6)
7
8const fieldError = 100
9const fieldData = 101
10const fieldUserName = 102
11const fieldUserID = 103
12const fieldUserIconID = 104
13const fieldUserLogin = 105
14const fieldUserPassword = 106
15const fieldRefNum = 107
16const fieldTransferSize = 108
17const fieldChatOptions = 109
18const fieldUserAccess = 110
aebc4d36
JH
19
20// const fieldUserAlias = 111 TODO: implement
6988a057
JH
21const fieldUserFlags = 112
22const fieldOptions = 113
23const fieldChatID = 114
24const fieldChatSubject = 115
25const fieldWaitingCount = 116
26const fieldVersion = 160
27const fieldCommunityBannerID = 161
28const fieldServerName = 162
29const fieldFileNameWithInfo = 200
30const fieldFileName = 201
31const fieldFilePath = 202
16a4ad70
JH
32const fieldFileResumeData = 203
33const fieldFileTransferOptions = 204
6988a057
JH
34const fieldFileTypeString = 205
35const fieldFileCreatorString = 206
36const fieldFileSize = 207
37const fieldFileCreateDate = 208
38const fieldFileModifyDate = 209
39const fieldFileComment = 210
40const fieldFileNewName = 211
41const fieldFileNewPath = 212
42const fieldFileType = 213
5ae50876 43const fieldQuotingMsg = 214
6988a057
JH
44const fieldAutomaticResponse = 215
45const fieldFolderItemCount = 220
46const fieldUsernameWithInfo = 300
47const fieldNewsArtListData = 321
48const fieldNewsCatName = 322
49const fieldNewsCatListData15 = 323
50const fieldNewsPath = 325
51const fieldNewsArtID = 326
52const fieldNewsArtDataFlav = 327
53const fieldNewsArtTitle = 328
54const fieldNewsArtPoster = 329
55const fieldNewsArtDate = 330
56const fieldNewsArtPrevArt = 331
57const fieldNewsArtNextArt = 332
58const fieldNewsArtData = 333
59const fieldNewsArtFlags = 334
60const fieldNewsArtParentArt = 335
61const fieldNewsArt1stChildArt = 336
62const fieldNewsArtRecurseDel = 337
63
64type Field struct {
65 ID []byte // Type of field
66 FieldSize []byte // Size of the data part
67 Data []byte // Actual field content
68}
69
70type requiredField struct {
71 ID int
72 minLen int
73 maxLen int
74}
75
76func NewField(id uint16, data []byte) Field {
77 idBytes := make([]byte, 2)
78 binary.BigEndian.PutUint16(idBytes, id)
79
80 bs := make([]byte, 2)
81 binary.BigEndian.PutUint16(bs, uint16(len(data)))
82
83 return Field{
84 ID: idBytes,
85 FieldSize: bs,
86 Data: data,
87 }
88}
89
90func (f Field) Payload() []byte {
91 return concat.Slices(f.ID, f.FieldSize, f.Data)
92}