merged from gramsrv upstream

This commit is contained in:
onysd 2026-09-01 12:06:31 +03:00
parent 79c64ee916
commit 21a0856587
651 changed files with 54774 additions and 4590 deletions

View file

@ -16,6 +16,7 @@ import (
"go.uber.org/zap"
"telesrv/internal/branding"
"telesrv/internal/domain"
"telesrv/internal/links"
)
@ -129,7 +130,7 @@ func newHandler(cfg Config, logger *zap.Logger) (http.Handler, error) {
return nil, fmt.Errorf("public Web sticker set resolver is nil")
}
if strings.TrimSpace(cfg.AppName) == "" {
cfg.AppName = links.DefaultAppName
cfg.AppName = branding.ProductName
}
if cfg.PublicBaseURL, err = links.ValidateBaseURL(cfg.PublicBaseURL); err != nil {
return nil, fmt.Errorf("public base URL: %w", err)
@ -213,6 +214,9 @@ func newHandler(cfg Config, logger *zap.Logger) (http.Handler, error) {
mux.Handle("POST /token", cfg.TelegramLogin)
mux.Handle("GET /telegram-login.js", cfg.TelegramLogin)
mux.Handle("GET /js/telegram-login.js", cfg.TelegramLogin)
mux.Handle("GET /telegram-widget.js", cfg.TelegramLogin)
mux.Handle("GET /js/telegram-widget.js", cfg.TelegramLogin)
mux.Handle("POST /telegram-widget/resolve", cfg.TelegramLogin)
}
mux.HandleFunc("GET /{username}", h.usernameLink)
mux.HandleFunc("GET /{username}/{$}", h.usernameLink)

View file

@ -45,6 +45,32 @@ func newTestHandlerWithPublicPeers(
return h
}
func TestTelegramLoginWidgetRoutesReachProvider(t *testing.T) {
provider := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusNoContent)
})
h, err := NewHandler(Config{
StickerSets: fakeResolver{}, PublicBaseURL: "https://links.example.test", TelegramLogin: provider,
})
if err != nil {
t.Fatalf("NewHandler: %v", err)
}
for _, tc := range []struct {
method string
path string
}{
{method: http.MethodGet, path: "/telegram-widget.js?23"},
{method: http.MethodGet, path: "/js/telegram-widget.js?23"},
{method: http.MethodPost, path: "/telegram-widget/resolve"},
} {
recorder := httptest.NewRecorder()
h.ServeHTTP(recorder, httptest.NewRequest(tc.method, tc.path, nil))
if recorder.Code != http.StatusNoContent {
t.Fatalf("%s %s status=%d", tc.method, tc.path, recorder.Code)
}
}
}
type fakeModerationAppeals struct {
link domain.ModerationAppealLink
found bool
@ -304,7 +330,7 @@ func TestHandlerServesBotUsernameLandingPage(t *testing.T) {
"http://127.0.0.1:2401/TetrisBot",
"telesrv://127.0.0.1:2401/TetrisBot",
"Start Bot",
"Open telesrv to start a chat with this bot.",
"Open Telesrv to start a chat with this bot.",
`property="og:title" content="Tetris Bot"`,
`property="al:android:url" content="telesrv://127.0.0.1:2401/TetrisBot"`,
} {