package logging

import (
	"errors"
	"net/url"
)

// SanitizeErr убирает из ошибки HTTP-транспорта URL запроса и возвращает только
// первопричину. Ошибки клиента net/http — `*url.Error`, чей текст встраивает
// полный URL, а URL может нести секрет: токен бота Telegram в пути
// (`…/bot<TOKEN>/<method>`) или api_key TMDB в query
// (`…/search/movie?api_key=<SECRET>&…`). Логировать или оборачивать такую ошибку
// как есть нельзя — секрет утечёт в логи (инвариант «секреты не в логи», см.
// logging.md, раздел «Безопасность»).
//
// Логическая операция при этом не теряется: она пишется отдельным полем
// (`ext.operation`) на границе клиента. Не `*url.Error` — возвращаем как есть.
func SanitizeErr(err error) error {
	var ue *url.Error
	if errors.As(err, &ue) {
		return ue.Err
	}
	return err
}
