Commit Graph

17 Commits

Author SHA1 Message Date
V1ck3s
d31a380176 fix: add HTTP Range header forwarding for iOS clients 2026-01-13 17:09:56 -05:00
bransoned
12598d17e2 #31 (upstream) Fix iOS client local streaming issues 2026-01-11 18:47:13 -05:00
bransoned
e1db12a165 Add logic to allow for new SquidWTF service 2026-01-10 20:59:16 -05:00
V1ck3s
9245dac99e refactor: extract subsonic controller logic into specialized services
- Extract SubsonicRequestParser for HTTP parameter extraction
- Extract SubsonicResponseBuilder for XML/JSON response formatting
- Extract SubsonicModelMapper for search result parsing and merging
- Extract SubsonicProxyService for upstream Subsonic server communication
- Add comprehensive test coverage (45 tests) for all new services
- Reduce SubsonicController from 1174 to 666 lines (-43%)

All tests passing. Build succeeds with 0 errors.
2026-01-08 21:47:05 +01:00
V1ck3s
ce779b3c8a refactor: reorganize Models into subdirectories by context
Split monolithic MusicModels.cs (177 lines) into separate files:
- Models/Settings/ (DeezerSettings, QobuzSettings, SubsonicSettings)
- Models/Domain/ (Song, Album, Artist)
- Models/Search/ (SearchResult)
- Models/Download/ (DownloadInfo, DownloadStatus)
- Models/Subsonic/ (ScanStatus)

Updated namespaces and imports across 22 files.
Improves navigation and separates models by business context.
2026-01-08 19:57:11 +01:00
V1ck3s
43c9a2e808 refactor: add Result<T> pattern and global exception handler for consistent error handling 2026-01-08 19:31:05 +01:00
V1ck3s
cb37c7f69a refactor: implement unified startup validator architecture with IStartupValidator interface 2026-01-08 19:19:45 +01:00
V1ck3s
fe9cb9b758 refactor: organize services by provider and standardize settings pattern 2026-01-08 19:02:44 +01:00
V1ck3s
275467c5bf feat: add pluggable music service architecture with Qobuz support 2026-01-07 23:55:59 +01:00
V1ck3s
2a6191e9db feat: add startup validation for Subsonic and Deezer connectivity 2026-01-04 17:42:49 +01:00
V1ck3s
88d8cbb376 fix: address Copilot PR review findings
- Register DeezerDownloadService and DeezerMetadataService as Singleton
  to properly share state across requests (rate limiting, download tracking)
- Fix race condition in LocalLibraryService.LoadMappingsAsync with
  double-check locking pattern
- Dispose HttpRequestMessage objects to prevent memory leaks (4 occurrences)
- Handle fire-and-forget TriggerLibraryScanAsync with proper error logging
- Replace Console.WriteLine with ILogger in SubsonicController
- Fix while loop in DownloadSongAsync to refresh activeDownload state
- Use modern C# range operator syntax for Substring calls
- Clean up appsettings.json template (remove private IP, clear ARL token)
- Add documentation comment for Blowfish decryption key
- Add downloads directory to gitignore
2025-12-13 18:06:37 +01:00
V1ck3s
2d69a5c33e refactor: update comments and documentation to English for consistency 2025-12-13 18:06:37 +01:00
V1ck3s
8aa9c2d437 feat: implement DeezerDownloadService with Blowfish decryption
- Port JavaScript DeezerDownloader to C#
- Add Deezer API authentication with ARL token
- Implement track download via media.deezer.com API
- Add Blowfish CBC decryption for encrypted chunks (uses OpenSSL)
- Add rate limiting and retry with exponential backoff
- Update config for Deezer ARL tokens
- Configure Subsonic URL to 192.168.1.12:4533
2025-12-13 18:06:37 +01:00
V1ck3s
6b07ac7646 feat: add subsonic proxy architecture with external music services
- Add MusicModels (Song, Artist, Album, SearchResult, DownloadInfo)
- Add IMusicMetadataService and DeezerMetadataService for external search
- Add IDownloadService and DeezspotDownloadService for downloads
- Add LocalLibraryService for managing downloaded songs cache
- Add custom endpoints: search3, stream, getSong, getAlbum, getCoverArt
- Configure dependency injection for all services
2025-12-13 18:06:37 +01:00
V1ck3s
17769e2c28 feat: add subsonic all in one endpoint, subsonic settings configuration and CORS policy 2025-09-21 16:22:18 +02:00
V1ck3s
25c95a52d9 add SubsonicController and configure HttpClient 2025-09-20 17:48:30 +02:00
V1ck3s
843ef87da8 initial commit 2025-09-20 16:42:46 +02:00