Source File
encoder.go
Belonging Package
github.com/gotd/td/tdjson
package tdjson
import (
)
// Encoder is a simple wrapper around jx.Encoder to conform TL type system.
type Encoder struct {
*jx.Writer
}
// PutID serializes given typeID.
func ( Encoder) ( string) {
.Writer.FieldStart(TypeField)
.Writer.Str()
}
// PutInt serializes v as signed 32-bit integer.
func ( Encoder) ( int) {
.Writer.Int()
}
// PutBool serializes boolean.
func ( Encoder) ( bool) {
.Writer.Bool()
}
// PutUint16 serializes unsigned 16-bit integer.
func ( Encoder) ( uint16) {
.Writer.UInt32(uint32())
}
// PutInt32 serializes signed 32-bit integer.
func ( Encoder) ( int32) {
.Writer.Int32()
}
// PutUint32 serializes unsigned 32-bit integer.
func ( Encoder) ( uint32) {
.Writer.UInt32()
}
// PutInt53 serializes v as int53.
func ( Encoder) ( int64) {
.Writer.Int64()
}
// PutLong serializes v as int64.
func ( Encoder) ( int64) {
var [32]byte
:= append([:0], '"')
= strconv.AppendInt(, , 10)
= append(, '"')
.Writer.Raw()
}
// PutUint64 serializes v as unsigned 64-bit integer.
func ( Encoder) ( uint64) {
// FIXME(tdakkota): TDLib API has no uint64 fields
// so this encoding may incorrect.
.Writer.UInt64()
}
// PutDouble serializes v as 64-bit floating point.
func ( Encoder) ( float64) {
.Writer.Float64()
}
// PutInt128 serializes v as 128-bit signed integer.
func ( Encoder) ( bin.Int128) {
// FIXME(tdakkota): neither TDLib API nor Telegram API has no Int128/Int256 fields
// so this encoding may incorrect.
.Writer.Str(hex.EncodeToString([:]))
}
// PutInt256 serializes v as 256-bit signed integer.
func ( Encoder) ( bin.Int256) {
// FIXME(tdakkota): neither TDLib API not Telegram API has no Int128/Int256 fields
// so this encoding may incorrect.
.Writer.Str(hex.EncodeToString([:]))
}
// PutString serializes bare string.
func ( Encoder) ( string) {
.Writer.Str()
}
// PutBytes serializes bare byte string.
func ( Encoder) ( []byte) {
// See https://core.telegram.org/tdlib/docs/td__json__client_8h.html
//
// ... fields of bytes type are base64 encoded and then stored as String ...
.Writer.Str(base64.RawURLEncoding.EncodeToString())
}
// StripComma deletes last comma, if any.
//
// Useful for code generation to avoid last field/element tracking.
func ( Encoder) () {
if := len(.Buf); > 0 && .Buf[-1] == ',' {
.Buf = .Buf[:-1]
}
}
The pages are generated with Golds v0.6.7. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |