Documentation ¶
Overview ¶
Package peer conatains some peer resolving and extracting helpers.
Index ¶
- type DialogKey
- type Entities
- type EntitySearchResult
- type Kind
- type LRUResolver
- type Promise
- func OnlyChannel(p Promise) Promise
- func OnlyChat(p Promise) Promise
- func OnlyUser(p Promise) Promise
- func Resolve(r Resolver, from string) Promise
- func ResolveDeeplink(r Resolver, u string) Promise
- func ResolveDomain(r Resolver, domain string) Promise
- func ResolvePhone(r Resolver, phone string) Promise
- type PromiseDecorator
- type Resolver
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DialogKey ¶ added in v0.27.0
DialogKey is a generic peer key.
func (*DialogKey) FromInputPeer ¶ added in v0.27.0
func (d *DialogKey) FromInputPeer(peer tg.InputPeerClass) error
FromInputPeer fills key using given peer.
type Entities ¶
type Entities struct {
// contains filtered or unexported fields
}
Entities is simple peer entities storage.
func EntitiesFromResult ¶
func EntitiesFromResult(r EntitySearchResult) Entities
EntitiesFromResult fills Entities struct using given context.
func EntitiesFromUpdate ¶
EntitiesFromUpdate fills Entities struct using given context.
func NewEntities ¶
func NewEntities( users map[int]*tg.User, chats map[int]*tg.Chat, channels map[int]*tg.Channel, ) Entities
NewEntities creates new Entities struct.
func (Entities) ExtractPeer ¶
ExtractPeer finds and creates InputPeerClass using given PeerClass.
func (Entities) Fill ¶
func (ent Entities) Fill( users map[int]*tg.User, chats map[int]*tg.Chat, channels map[int]*tg.Channel, )
Fill adds and updates all entities from given maps.
func (Entities) FillFromResult ¶
func (ent Entities) FillFromResult(r EntitySearchResult)
FillFromResult adds and updates all entities from given result.
func (Entities) FillFromUpdate ¶
FillFromUpdate adds and updates all entities from given updates.
type EntitySearchResult ¶
type EntitySearchResult interface { MapChats() tg.ChatClassArray MapUsers() tg.UserClassArray }
EntitySearchResult is abstraction for different RPC responses which contains entities.
type LRUResolver ¶
type LRUResolver struct {
// contains filtered or unexported fields
}
LRUResolver is simple decorator for Resolver to cache result in LRU.
func NewLRUResolver ¶
func NewLRUResolver(next Resolver, capacity int) *LRUResolver
NewLRUResolver creates new LRUResolver.
func (*LRUResolver) ResolveDomain ¶ added in v0.31.0
func (l *LRUResolver) ResolveDomain(ctx context.Context, domain string) (tg.InputPeerClass, error)
ResolveDomain implements Resolver.
func (*LRUResolver) ResolvePhone ¶ added in v0.30.0
func (l *LRUResolver) ResolvePhone(ctx context.Context, phone string) (tg.InputPeerClass, error)
ResolvePhone implements Resolver.
type Promise ¶ added in v0.27.0
type Promise func(ctx context.Context) (tg.InputPeerClass, error)
Promise is a peer promise.
func OnlyChannel ¶ added in v0.30.0
OnlyChannel returns Promise which returns error if resolved peer is not a channel.
func OnlyChat ¶ added in v0.30.0
OnlyChat returns Promise which returns error if resolved peer is not a chat.
func OnlyUser ¶ added in v0.30.0
OnlyUser returns Promise which returns error if resolved peer is not a user.
func Resolve ¶ added in v0.27.0
Resolve uses given string to create new peer promise. It resolves peer of message using given Resolver. Input examples:
@telegram telegram t.me/telegram https://t.me/telegram tg:resolve?domain=telegram tg://resolve?domain=telegram +13115552368 +1 (311) 555-0123 +1 311 555-6162 13115556162
func ResolveDeeplink ¶ added in v0.27.0
ResolveDeeplink uses given deeplink to create new peer promise. Deeplink is a URL like https://t.me/telegram. It resolves peer of message using given Resolver. Input examples:
t.me/telegram https://t.me/telegram tg:resolve?domain=telegram tg://resolve?domain=telegram
func ResolveDomain ¶ added in v0.27.0
ResolveDomain uses given domain to create new peer promise. It resolves peer of message using given Resolver. Can has prefix with @ or not. Input examples:
@telegram telegram
func ResolvePhone ¶ added in v0.30.0
ResolvePhone uses given phone to create new peer promise. It resolves peer of message using given Resolver. Input example:
+13115552368 +1 (311) 555-0123 +1 311 555-6162 13115556162
Note that Telegram represents phone numbers according to the E.164 standard without the plus sign (”+”) prefix. The resolver therefore takes an easy route and just deletes any non-digit symbols from phone number string.
type PromiseDecorator ¶ added in v0.30.0
PromiseDecorator is a decorator of peer promise.
type Resolver ¶
type Resolver interface { ResolveDomain(ctx context.Context, domain string) (tg.InputPeerClass, error) ResolvePhone(ctx context.Context, phone string) (tg.InputPeerClass, error) }
Resolver is a abstraction to resolve domains and Telegram deeplinks.
func DefaultResolver ¶
DefaultResolver creates and returns default resolver.