66 lines
2.3 KiB
Go
66 lines
2.3 KiB
Go
package rpc
|
||
|
||
import (
|
||
"context"
|
||
|
||
"github.com/gotd/td/tg"
|
||
|
||
"telesrv/internal/compat/tdesktop"
|
||
)
|
||
|
||
// registerHelp 注册 help.* RPC handler(DC 配置、最近 DC)。
|
||
func (r *Router) registerHelp(d *tg.ServerDispatcher) {
|
||
d.OnHelpGetConfig(func(ctx context.Context) (*tg.Config, error) {
|
||
return tdesktop.BuildConfig(r.cfg.DC, r.cfg.IP, r.cfg.Port, r.clock.Now()), nil
|
||
})
|
||
d.OnHelpGetNearestDC(func(ctx context.Context) (*tg.NearestDC, error) {
|
||
return tdesktop.NearestDC(r.cfg.DC), nil
|
||
})
|
||
d.OnHelpGetInviteText(func(ctx context.Context) (*tg.HelpInviteText, error) {
|
||
return &tg.HelpInviteText{Message: "Join me on Telegram."}, nil
|
||
})
|
||
d.OnHelpGetAppConfig(func(ctx context.Context, hash int) (tg.HelpAppConfigClass, error) {
|
||
if r.deps.Help == nil {
|
||
return tdesktop.AppConfig(hash), nil
|
||
}
|
||
cfg, notModified, err := r.deps.Help.GetAppConfig(ctx, hash)
|
||
if err != nil {
|
||
return nil, internalErr()
|
||
}
|
||
if notModified {
|
||
return &tg.HelpAppConfigNotModified{}, nil
|
||
}
|
||
return &tg.HelpAppConfig{Hash: cfg.Hash, Config: tgJSONValue(cfg.JSON)}, nil
|
||
})
|
||
d.OnHelpGetCountriesList(func(ctx context.Context, req *tg.HelpGetCountriesListRequest) (tg.HelpCountriesListClass, error) {
|
||
if r.deps.Help == nil {
|
||
return tdesktop.CountriesList(req.Hash), nil
|
||
}
|
||
list, notModified, err := r.deps.Help.GetCountries(ctx, req.LangCode, req.Hash)
|
||
if err != nil {
|
||
return nil, internalErr()
|
||
}
|
||
if notModified {
|
||
return &tg.HelpCountriesListNotModified{}, nil
|
||
}
|
||
return tgCountriesList(list), nil
|
||
})
|
||
d.OnHelpGetTimezonesList(func(ctx context.Context, hash int) (tg.HelpTimezonesListClass, error) {
|
||
return tdesktop.TimezonesList(hash), nil
|
||
})
|
||
d.OnHelpGetPeerColors(func(ctx context.Context, hash int) (tg.HelpPeerColorsClass, error) {
|
||
return tdesktop.PeerColors(), nil
|
||
})
|
||
d.OnHelpGetPeerProfileColors(func(ctx context.Context, hash int) (tg.HelpPeerColorsClass, error) {
|
||
return tdesktop.PeerColors(), nil
|
||
})
|
||
d.OnHelpGetPromoData(func(ctx context.Context) (tg.HelpPromoDataClass, error) {
|
||
return tdesktop.PromoData(r.clock.Now()), nil
|
||
})
|
||
d.OnHelpGetTermsOfServiceUpdate(func(ctx context.Context) (tg.HelpTermsOfServiceUpdateClass, error) {
|
||
return tdesktop.TermsOfServiceUpdate(r.clock.Now()), nil
|
||
})
|
||
d.OnHelpGetPremiumPromo(func(ctx context.Context) (*tg.HelpPremiumPromo, error) {
|
||
return tdesktop.PremiumPromo(), nil
|
||
})
|
||
}
|