Skip to content

Releases: slipynil/itd-go

v0.5.0

Choose a tag to compare

@slipynil slipynil released this 07 May 03:14
v0.5.0
1251745

🚀 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 для корректной десериализации дат

⚠️ BREAKING CHANGES

• 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

Choose a tag to compare

@slipynil slipynil released this 28 Apr 02:26
v0.4.0
3acd8aa

🎨 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 паттерн

⚠️ Breaking Changes:

• Posts.Create и Posts.CreateWithPoll теперь принимают *PostBuilder вместо string
• Удалён параметр ctx из конструкторов итераторов

v0.3.1

Choose a tag to compare

@slipynil slipynil released this 26 Apr 21:02
v0.3.1
12e9296

🎯 Основные улучшения

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

Choose a tag to compare

@slipynil slipynil released this 21 Apr 19:56
v0.3.0
6fe299d

Release v0.3.0: Архитектурный рефакторинг

BREAKING CHANGES:
- Удалены интерфейсы PostsAPI, UserAPI, CommentsAPI из types/interfaces.go
- Клиент теперь использует конкретные типы вместо интерфейсов

Архитектурные улучшения:
- API слой перемещён из internal/api/ в публичный пакет api/
- Создан отдельный пакет errors/ для обработки ошибок
- Реорганизация итераторов и консолидация пакета аутентификации
- Упрощение структуры проекта и удаление избыточных абстракций

Миграция: если вы не использовали интерфейсные типы из types/interfaces.go
напрямую, миграция не требуется. Все публичные методы API остались без изменений.

v0.2.1

Choose a tag to compare

@slipynil slipynil released this 19 Apr 14:44
v0.2.1

Release v0.2.1

Технический релиз с улучшением качества кода и устранением технического долга.

⚠️ Внимание: содержит breaking changes — см. раздел "Миграция" ниже.

Что нового

Добавлено

  • Валидация входных данных — методы создания контента теперь проверяют корректность параметров перед
    отправкой запроса
  • Унифицированный тип 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

Choose a tag to compare

@slipynil slipynil released this 19 Apr 13:19
75a2c06

Release v0.2.0

Вторая версия ITD Go SDK с автоматической загрузкой файлов и поддержкой опросов.

⚠️ Внимание: содержит breaking changes — см. раздел "Миграция" ниже.

Что нового

  • Автоматическая загрузка файлов — методы 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-go

v0.1.1

Choose a tag to compare

@slipynil slipynil released this 12 Apr 01:18
795e69f

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

Документация

⚠️ Ранняя версия, API может измениться.