Skip to content

feat: собственный клиент Shikimori API (GraphQL + REST) вместо ShikimoriSharp - #36

Open
RXDCODX wants to merge 1 commit into
masterfrom
feature/shikimori-own-client
Open

feat: собственный клиент Shikimori API (GraphQL + REST) вместо ShikimoriSharp#36
RXDCODX wants to merge 1 commit into
masterfrom
feature/shikimori-own-client

Conversation

@RXDCODX

@RXDCODX RXDCODX commented Aug 21, 2026

Copy link
Copy Markdown
Owner

Что сделано

Пакет ShikimoriSharp удалён (его домен \�pi.shikimori.one\ более не резолвится). Вместо него — собственный клиент на актуальном домене \shikimori.io.

Гибридная схема (проверено живьём)

  • GraphQL \POST /api/graphql\ — случайные аниме/манга (\order: random, score) и по ID
  • REST \GET /api/characters/{id}\ — персонажи: GraphQL-схема не содержит связи персонажа с его аниме/мангами, а они нужны для автозаполнения \waifu.Anime/\waifu.Manga\

Изменения

  • \ShikimoriApiClient\ + \IShikimoriApiClient: именованный HttpClient \Shikimori\ с BaseAddress и User-Agent из \ShikimoriClientOptions.ClientName\
  • Сущности \ShikimoriAnime\ / \ShikimoriManga\ / \ShikimoriCharacter\ / \ShikimoriTitle\ заменяют \Anime/\AnimeID/\Manga/\MangaID/\FullCharacter\
  • Постеры приводятся к относительным путям (\uri.PathAndQuery, query сохраняется) — контракт «в БД путь без домена» не изменился, префиксование \ShikimoriSite\ в WaifuRoll/WaifuPrizes/MergeWaifu работает как раньше
  • \MediaMetadataService: regex принимает и \shikimori.one, и \shikimori.io\
  • Rate limiter не изменён

Тесты (TDD)

  • \ShikimoriApiClientTests\ — 10 юнит-тестов с моком \HttpMessageHandler\ (парсинг, ошибки HTTP/GraphQL, обрезка origin, проверка endpoint'ов)
  • \ShikimoriServiceTests\ — переведены на мок клиента + тесты делегирования
  • Интеграционные тесты работают через DI с реальным API

Верификация

  • \dotnet build MARS.Server.csproj\ — 0 ошибок
  • 117 тестов Shikimori/WaifuRoll/MergeWaifu — прошли; полный прогон: 1499 passed, 6 упавших (сетевые YouTube/DNS, не связаны)

… ShikimoriSharp

- Добавлен ShikimoriApiClient: аниме и манга через GraphQL shikimori.io, персонажи через REST /api/characters/{id} (в GraphQL нет связи персонажа с работами)
- Новые сущности ShikimoriAnime/ShikimoriManga/ShikimoriCharacter/ShikimoriTitle заменяют типы ShikimoriSharp
- Постеры приводятся к относительным путям с сохранением query — контракт хранения в БД не изменился
- Регистрация именованного HttpClient 'Shikimori' с User-Agent из конфигурации
- MediaMetadataService принимает ссылки shikimori.io
- Пакет ShikimoriSharp удалён (его домен api.shikimori.one более не резолвится)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant