Releases: slipynil/itd-go
Release list
v0.5.0
🚀 v0.5.0 — Rate Limiting & Search
Автоматическая обработка rate limiting:
• Автоматический retry при ошибке 429 с exponential backoff (1s → 2s → 4s → 8s)
• Настройка через Config.MaxRetries (по умолчанию 3) и Config.RetryDelay (по умолчанию 1s)
• Оптимизация HTTP пула: MaxIdleConns 100→3, MaxIdleConnsPerHost 50→3
🔍 Улучшения Search API:
• Новый метод Search.Query() для поиска пользователей и хештегов
• Типы UserQueryResult и SearchResult для результатов поиска
• Search.TopClans() → Search.Top10Clans() для большей ясности
🔄 Рефакторинг итераторов:
• PageToken теперь используется как указатель (*PageToken)
- nil = первый запрос без токена
- &PageToken{...} = есть cursor для следующей страницы
• Переименованы интерфейсы: posts.FeedIterator → posts.Iterator, comments.CommentIterator → comments.Iterator, notifications.NotificationIterator → notifications.Iterator
• Переименованы методы: Search.NewHashtagFeed() → Search.NewHashtagPosts(), Comments.NewCommentList() → Comments.NewPostComments(), Notifications.NewIterator() → Notifications.NewNotifications()
🐛 Исправления:
• Критическая ошибка пагинации в api/search и api/comments
• Утечка ресурсов: добавлен defer resp.Body.Close() в errors.CheckResponse()
• 8 методов теперь используют transport.DataOptions для корректной десериализации дат
• Search.TopClans() → Search.Top10Clans()
• PageToken теперь указатель (*PageToken вместо PageToken)
• Переименованы методы создания итераторов (см. выше)
📚 Документация:
• Добавлены примеры: retry_handling.go, get_query_result.go
• Добавлен docs/middleware-guide.md
• Обновлён README с Config.MaxRetries, Config.RetryDelay и примером Stream()
🔗 Полный список изменений
См. CHANGELOG.md
v0.4.0
🎨 v0.4.0 — Rich Text & Real-Time
Форматирование текста:
• Новый PostBuilder с fluent API для форматирования (Bold, Italic, Underline, Strike, Spoiler, Monospace, Link)
• Автоматическое применение стилей ко всем вхождениям слов
🔔 Уведомления в реальном времени:
• SSE стриминг через метод Stream(ctx)
• Новый тип StreamNotification с расширенными полями
• Методы для работы с уведомлениями: ListUnread, MarkAllRead, MarkRead, MarkNotificationsRead
Улучшения архитектуры:
• Рефакторинг итераторов: контекст теперь только в Next(ctx)
• Все сообщения об ошибках переведены на английский
• Sentinel errors для валидации и API ошибок
• Примеры переведены на autoload паттерн
• Posts.Create и Posts.CreateWithPoll теперь принимают *PostBuilder вместо string
• Удалён параметр ctx из конструкторов итераторов
v0.3.1
🎯 Основные улучшения
Sentinel Errors для type-safe обработки ошибок:
• Теперь можно проверять ошибки через errors.Is() и errors.As() вместо парсинга строк
• Добавлено 9 валидационных ошибок (ErrEmptyPostID, ErrEmptyContent, ErrNilPoll и др.)
• Добавлено 5 API ошибок с маппингом HTTP статусов (ErrUnauthorized, ErrNotFound, ErrForbidden, ErrRateLimited, ErrServerError)
• APIError теперь поддерживает Unwrap() для работы с errors.Is()
Специализированные типы результатов:
• CreatedPost, CreatedPostWithPoll, CreatedPostWithRepost — точные типы вместо полного Post
• CreatedPostBase — базовая структура через композицию, устранение дублирования
• CreatedComment — специализированный тип для результата создания комментария
Валидация файлов:
• Валидация файлов при создании постов и комментариев (формат, количество)
• Новые ошибки: InvalidFileExtension, TooManyFiles, NoFileExtension
🔄 BREAKING CHANGES
Методы API теперь возвращают специализированные типы:
• Posts.Create(): *types.Post → *types.CreatedPost
• Posts.CreateWithPoll(): *types.Post → *types.CreatedPostWithPoll
• Posts.Repost(): *types.Post → *types.CreatedPostWithRepost
• Comments.CreateComment(): *types.CreateComment → *types.CreatedComment
• Comments.CreateReply(): *types.CreateComment → *types.CreatedComment
Полный пример: examples/errors/error_handling.go
🛠 Внутренние улучшения
• Все сообщения об ошибках переведены на английский (соответствие стандартам Go)
• Реорганизация пакета errors/ на 4 файла: API.go, transport.go, files.go, validation.go
• Улучшена обработка non-JSON ответов в CheckResponse()
• Обновлены все примеры: добавлен //go:build ignore, упрощена инициализация
🔗 Полный список изменений
См. CHANGELOG.md
v0.3.0
Release v0.3.0: Архитектурный рефакторинг
BREAKING CHANGES:
- Удалены интерфейсы PostsAPI, UserAPI, CommentsAPI из types/interfaces.go
- Клиент теперь использует конкретные типы вместо интерфейсов
Архитектурные улучшения:
- API слой перемещён из internal/api/ в публичный пакет api/
- Создан отдельный пакет errors/ для обработки ошибок
- Реорганизация итераторов и консолидация пакета аутентификации
- Упрощение структуры проекта и удаление избыточных абстракций
Миграция: если вы не использовали интерфейсные типы из types/interfaces.go
напрямую, миграция не требуется. Все публичные методы API остались без изменений.
v0.2.1
Release v0.2.1
Технический релиз с улучшением качества кода и устранением технического долга.
Что нового
Добавлено
- Валидация входных данных — методы создания контента теперь проверяют корректность параметров перед
отправкой запроса - Унифицированный тип
AuthorInfo— единый тип для информации об авторе вместоAuthorиPostAuthor
Улучшения качества кода
- Заменены
map[string]interface{}на типизированные структуры в методахRepostиVote - Добавлен helper метод
UploadFilesдля устранения дублирования кода загрузки файлов - Удалён неиспользуемый код из транспортного слоя
- Улучшена типобезопасность внутренних API запросов
Breaking Changes
- Типы
AuthorиPostAuthorобъединены в единый типAuthorInfo - Поле
IsVerifiedпереименовано вVerifiedдля консистентности
Миграция с 0.2.0
Было:
var author types.Author // или types.PostAuthorСтало:
var author types.AuthorInfoПримечание: Если вы не использовали типы Author или PostAuthor напрямую в своём коде, миграция не требуется.
Установка
go get github.com/slipynil/itd-go@v0.2.1Документация
v0.2.0
Release v0.2.0
Вторая версия ITD Go SDK с автоматической загрузкой файлов и поддержкой опросов.
Что нового
- Автоматическая загрузка файлов — методы
Create,CreateComment,CreateReplyтеперь принимают пути к
файлам и автоматически загружают их на сервер - Создание постов с опросами — новый метод
CreateWithPollдля создания постов с прикреплёнными опросами - Упрощённое обновление профиля — метод
UpdateProfileтеперь принимает структуру и автоматически загружает
баннер
Breaking Changes
Posts.Create(ctx, content, filePaths...)— теперь принимает пути к файлам вместо ID вложенийComments.CreateComment(ctx, postID, content, filePaths...)— теперь принимает пути к файламComments.CreateReply(ctx, parentCommentID, replyToUserID, content, filePaths...)— изменена сигнатураUser.UpdateProfile(ctx, config)— теперь принимает структуруUpdateProfile
Миграция с 0.1.x
Было:
attachmentID := "..." // ID загруженного файла
post, err := client.Posts.Create(ctx, "Контент", attachmentID)
Стало:
post, err := client.Posts.Create(ctx, "Контент", "/path/to/file.jpg")
Полное руководство по миграции см. в https://github.com/slipynil/itd-go/blob/master/CHANGELOG.md#миграция-с-01x
Установка
go get github.com/slipynil/itd-go@v0.2.0
Документация
- https://github.com/slipynil/itd-go#readme
- https://github.com/slipynil/itd-go/tree/master/examples
- https://pkg.go.dev/github.com/slipynil/itd-gov0.1.1
Release v0.1
Первая версия ITD Go SDK.
Что работает
- Posts API (10 методов)
- User API (7 методов)
- Comments API (8 методов)
- Итераторы для пагинации
- Автоматическая аутентификация
Установка
go get github.com/slipynil/itd-go@v0.1.0Документация