middleware

package
v0.41.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 23, 2021 License: MIT Imports: 1 Imported by: 0

Documentation

Overview

Package middleware defines middleware abstraction for RPC invokers.

Example
package main

import (
	"context"
	"time"

	"golang.org/x/time/rate"

	"github.com/gotd/td/middleware"
	"github.com/gotd/td/middleware/floodwait"
	"github.com/gotd/td/middleware/ratelimit"
	"github.com/gotd/td/telegram"
)

func main() {
	// Create a new telegram.Client instance that handles FLOOD_WAIT errors
	// and limits request rate to 10 Hz with max burst size of 5 request.
	//
	// Note that you must not use test app credentials in production.
	// See https://core.telegram.org/api/obtaining_api_id
	//
	client := telegram.NewClient(
		telegram.TestAppID,
		telegram.TestAppHash,
		telegram.Options{
			Middleware: middleware.Chain(
				floodwait.Middleware(),
				ratelimit.Middleware(
					rate.NewLimiter(rate.Every(100*time.Millisecond), 5),
				),
			),
		},
	)

	ctx := context.TODO()
	err := client.Run(ctx, func(ctx context.Context) error {
		return nil
	})
	if err != nil {
		panic(err)
	}
}
Output:

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Middleware

type Middleware func(invoker tg.Invoker) tg.Invoker

Middleware is a tg.Invoker middleware constructor.

func Chain

func Chain(middlewares ...Middleware) Middleware

Chain returns a Middleware that chains multiple Middleware constructor calls.

Directories

Path Synopsis
Package floodwait implements a tg.Invoker that handles flood wait errors.
Package floodwait implements a tg.Invoker that handles flood wait errors.
Package ratelimit implements a tg.Invoker that limits request rate.
Package ratelimit implements a tg.Invoker that limits request rate.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL