X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/22c599abc18895f73e96095f35b71cf3357d41b4..f6d10820df99ba533077581ae1201400260e7fb9:/hotline/field.go diff --git a/hotline/field.go b/hotline/field.go index 161a9b2..3378552 100644 --- a/hotline/field.go +++ b/hotline/field.go @@ -16,18 +16,23 @@ const fieldRefNum = 107 const fieldTransferSize = 108 const fieldChatOptions = 109 const fieldUserAccess = 110 -const fieldUserAlias = 111 + +// const fieldUserAlias = 111 TODO: implement const fieldUserFlags = 112 const fieldOptions = 113 const fieldChatID = 114 const fieldChatSubject = 115 const fieldWaitingCount = 116 +const fieldBannerType = 152 +const fieldNoServerAgreement = 152 const fieldVersion = 160 const fieldCommunityBannerID = 161 const fieldServerName = 162 const fieldFileNameWithInfo = 200 const fieldFileName = 201 const fieldFilePath = 202 +const fieldFileResumeData = 203 +const fieldFileTransferOptions = 204 const fieldFileTypeString = 205 const fieldFileCreatorString = 206 const fieldFileSize = 207 @@ -37,7 +42,7 @@ const fieldFileComment = 210 const fieldFileNewName = 211 const fieldFileNewPath = 212 const fieldFileType = 213 -const fieldQuotingMsg = 214 // Defined but unused in the Hotline Protocol spec +const fieldQuotingMsg = 214 const fieldAutomaticResponse = 215 const fieldFolderItemCount = 220 const fieldUsernameWithInfo = 300 @@ -53,10 +58,12 @@ const fieldNewsArtDate = 330 const fieldNewsArtPrevArt = 331 const fieldNewsArtNextArt = 332 const fieldNewsArtData = 333 -const fieldNewsArtFlags = 334 + +// const fieldNewsArtFlags = 334 const fieldNewsArtParentArt = 335 const fieldNewsArt1stChildArt = 336 -const fieldNewsArtRecurseDel = 337 + +// const fieldNewsArtRecurseDel = 337 type Field struct { ID []byte // Type of field @@ -88,33 +95,11 @@ func (f Field) Payload() []byte { return concat.Slices(f.ID, f.FieldSize, f.Data) } -type FileNameWithInfo struct { - Type string // file type code - Creator []byte // File creator code - FileSize uint32 // File Size in bytes - NameScript []byte // TODO: What is this? - NameSize []byte // Length of name field - Name string // File name -} - -func (f FileNameWithInfo) Payload() []byte { - name := []byte(f.Name) - nameSize := make([]byte, 2) - binary.BigEndian.PutUint16(nameSize, uint16(len(name))) - - kb := f.FileSize - - fSize := make([]byte, 4) - binary.BigEndian.PutUint32(fSize, kb) - - return concat.Slices( - []byte(f.Type), - f.Creator, - fSize, - []byte{0, 0, 0, 0}, - f.NameScript, - nameSize, - []byte(f.Name), - ) - +func getField(id int, fields *[]Field) *Field { + for _, field := range *fields { + if id == int(binary.BigEndian.Uint16(field.ID)) { + return &field + } + } + return nil }