Skip to content

feat(search): open game details directly from a URL (#189)#205

Merged
ALDamico merged 9 commits into
developfrom
feature/url-awareness
May 31, 2026
Merged

feat(search): open game details directly from a URL (#189)#205
ALDamico merged 9 commits into
developfrom
feature/url-awareness

Conversation

@ALDamico

Copy link
Copy Markdown
Owner
  • Contracts: add DetailsPageRegex to IGameDownloader; add FetchDetails(string) overload to IGameDetailProvider
  • Contracts: add DownloadManagerResult to replace the GetGames tuple return type
  • GameDownloaderBase: add virtual DetailsPageRegex (null) and FetchDetails(string) (returns null) defaults
  • GameDownloadManager: short-circuit to FetchDetails(string) when the search input matches a known detail page URL
  • TrCustomsGameDownloader: implement DetailsPageRegex via [GeneratedRegex]; implement FetchDetails(string) using Newtonsoft + SnakeCaseNamingStrategy; extract TrCustomsUrlUtils for URL construction
  • TrleGameDownloader: implement DetailsPageRegex; extract FetchDetailPage helper; implement FetchDetails(string) with full HTML scraping of the detail page
  • RaidingTheGlobeGameDownloader: implement DetailsPageRegex; extract DetailsLink from listing HTML; implement FetchDetails(string) by matching URL segment against page-1 results
  • AspideTrGameDownloader: implement DetailsPageRegex; extract FetchDetailPage helper; implement FetchDetails(string) with full HTML scraping of the detail page
  • SearchMapper: add ToViewModel(IGameSearchResultMetadata) overload for single-result mapping
  • GameSearchService: handle DownloadManagerResult.Details — navigate directly to the detail view instead of showing search results

Closes #189

ALDamico and others added 8 commits May 27, 2026 22:33
…tered (#189)

- Contracts: add DetailsPageRegex to IGameDownloader; add FetchDetails(string) overload to IGameDetailProvider
- Contracts: add DownloadManagerResult to replace the GetGames tuple return type
- GameDownloaderBase: add virtual DetailsPageRegex (null) and FetchDetails(string) (returns null) defaults
- GameDownloadManager: before search, check if any downloader recognises the input as a detail URL and short-circuit to FetchDetails
- TrCustomsGameDownloader: implement DetailsPageRegex via [GeneratedRegex]; implement FetchDetails(string) using Newtonsoft + SnakeCaseNamingStrategy to correctly deserialise last_file
- TrCustomsUrlUtils: extract URL construction helpers (GetDetailsLink, GetApiDetailsLink, GetReviewsLink, GetDownloadLink)
- SearchMapper: add ToViewModel(IGameSearchResultMetadata) overload for single-result mapping
- GameSearchService: handle DownloadManagerResult.Details — open detail view directly instead of showing search results

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…be (#189)

- Add DetailsPageRegex via [GeneratedRegex] to match raidingtheglobe.com detail page URLs
- Extract DetailsLink from listing page HTML (koowa_header__title_link anchor)
- Implement FetchDetails(string): match by last URL segment in page-1 results, then fetch full details
- Extract SizeRegex as [GeneratedRegex] for consistency

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add DetailsPageRegex via [GeneratedRegex] to match trle.net levelfeatures.php?lid= URLs
- Extract FetchDetailPage private helper to avoid duplicate HTTP calls
- Implement FetchDetails(string): scrapes title, author, TitlePic, description, DownloadLink, ReviewsLink, WalkthroughLink, difficulty, duration, rating, file size, engine, release date, review count from the detail page HTML

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tered (#189)

- Contracts: add DetailsPageRegex to IGameDownloader; add FetchDetails(string) overload to IGameDetailProvider
- Contracts: add DownloadManagerResult to replace the GetGames tuple return type
- GameDownloaderBase: add virtual DetailsPageRegex (null) and FetchDetails(string) (returns null) defaults
- GameDownloadManager: before search, check if any downloader recognises the input as a detail URL and short-circuit to FetchDetails
- TrCustomsGameDownloader: implement DetailsPageRegex via [GeneratedRegex]; implement FetchDetails(string) using Newtonsoft + SnakeCaseNamingStrategy to correctly deserialise last_file
- TrCustomsUrlUtils: extract URL construction helpers (GetDetailsLink, GetApiDetailsLink, GetReviewsLink, GetDownloadLink)
- SearchMapper: add ToViewModel(IGameSearchResultMetadata) overload for single-result mapping
- GameSearchService: handle DownloadManagerResult.Details — open detail view directly instead of showing search results

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…be (#189)

- Add DetailsPageRegex via [GeneratedRegex] to match raidingtheglobe.com detail page URLs
- Extract DetailsLink from listing page HTML (koowa_header__title_link anchor)
- Implement FetchDetails(string): match by last URL segment in page-1 results, then fetch full details
- Extract SizeRegex as [GeneratedRegex] for consistency

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add DetailsPageRegex via [GeneratedRegex] to match trle.net levelfeatures.php?lid= URLs
- Extract FetchDetailPage private helper to avoid duplicate HTTP calls
- Implement FetchDetails(string): scrapes title, author, TitlePic, description, DownloadLink, ReviewsLink, WalkthroughLink, difficulty, duration, rating, file size, engine, release date, review count from the detail page HTML

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
)

- Extract FetchDetailPage private helper to avoid duplicate HTTP calls
- Implement FetchDetails(string): scrapes title, author(s), release date, engine, rating, description, DownloadLink, ReviewsLink, WalkthroughLink, and first gallery image from the detail page HTML

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@ALDamico ALDamico self-assigned this May 31, 2026
@ALDamico ALDamico added the enhancement New feature or request label May 31, 2026
@ALDamico
ALDamico merged commit db7fe3e into develop May 31, 2026
2 checks passed
@ALDamico
ALDamico deleted the feature/url-awareness branch May 31, 2026 10:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Open game details directly when a detail-page URL is pasted in the search bar

2 participants