move gotd fork into repo. (#111)

- update to latest telegram layer
- remove some references to fields in tg.Entities that don't exist in
the schema
- originally added here:
https://github.com/beeper/td/commit/820929062a2ba0104397bc01235ab58a9cff780e
  - referenced here
-
https://github.com/mautrix/telegramgo/commit/124f0967ed195b5a380c9bd02e170ada9710dde3
-
https://github.com/mautrix/telegramgo/commit/4205047aab2e0639217148b5d125bfaab668bd8e
This commit is contained in:
Adam Van Ymeren
2025-06-27 20:03:37 -07:00
committed by GitHub
parent 0952df0244
commit 7a04f298d2
19264 changed files with 1539697 additions and 84 deletions
@@ -0,0 +1,49 @@
package downloader
import (
"context"
"io"
"go.mau.fi/mautrix-telegram/pkg/gotd/tg"
)
type streamReader struct {
ctx context.Context
reader *reader
curBlock block
last bool
}
var _ io.Reader = (*streamReader)(nil)
func (s *streamReader) Read(p []byte) (n int, err error) {
select {
case <-s.ctx.Done():
return 0, s.ctx.Err()
default:
}
if len(s.curBlock.data) == 0 {
if s.last {
return 0, io.EOF
} else {
s.curBlock, err = s.reader.Next(s.ctx)
if err != nil {
return 0, err
}
s.last = s.curBlock.last()
}
}
n = copy(p, s.curBlock.data)
s.curBlock.data = s.curBlock.data[n:]
return
}
func (d *Downloader) streamToReader(ctx context.Context, r *reader) (tg.StorageFileTypeClass, io.Reader, error) {
first, err := r.Next(ctx)
if err != nil {
return nil, nil, err
}
return first.tag, &streamReader{ctx, r, first, first.last()}, nil
}