Commit Graph

204 Commits

Author SHA1 Message Date
Branson
9563eb8868 Revise README with updated configuration options
Updated configuration details for SquidWTF, Deezer, and Qobuz. Changed default SUBSONIC_URL and added new settings for audio quality and storage mode.
2026-01-17 11:12:37 -05:00
Branson
2e08b4c562 Update environment variables in docker-compose.yml
Removed Deezer ARL tokens and quality settings, added SquidWTF quality setting.
2026-01-17 11:07:21 -05:00
Branson
b1a0718acc Add SquidWTF configuration to .env.example
Added configuration options for SquidWTF service.
2026-01-17 11:05:19 -05:00
Branson
bd8971835e Update MUSIC_SERVICE option in .env.example
Make SquidWTF default option
2026-01-17 11:03:01 -05:00
Branson
aa8fdb4aca Update README
Updated README to reflect the new name 'Octo-Fiestarr' and added SquidWTF support details.
2026-01-17 11:01:29 -05:00
Branson
e04c254f04 Update docker-compose.yml 2026-01-17 08:35:19 -05:00
Branson
17a991a4fd Update octo-fiesta image reference 2026-01-16 20:33:46 -05:00
Branson
488cd64d25 Fix syntax error 2026-01-16 19:40:45 -05:00
Branson
f931a86129 Add new playlist search/parsing implementations from upstream for SquidWTF 2026-01-16 19:40:11 -05:00
Branson
8c67f4acce Update constructor with new parameter from upstream 2026-01-16 19:39:16 -05:00
bransoned
bfcb78b0b4 fix: merge conflicts and upstream changes merged 2026-01-16 22:45:04 +00:00
Vickes
4fde5a6db4 feat: add HTTP Range header support for iOS streaming clients (#48) 2026-01-15 23:47:03 +01:00
V1ck3s
1bf3e17d78 docs: add external playlists feature documentation 2026-01-15 23:32:31 +01:00
V1ck3s
e8e385b770 fix: resolve circular dependency and fix failing tests 2026-01-15 23:32:31 +01:00
V1ck3s
ebe6e90f39 feat: playlist implementation 2026-01-15 23:32:31 +01:00
Branson
0f93862cc2 Fix syntax error 2026-01-13 17:10:29 -05:00
bransoned
ce9689daa2 Change repeated array allocation into predefined constant 2026-01-13 17:10:11 -05:00
V1ck3s
d31a380176 fix: add HTTP Range header forwarding for iOS clients 2026-01-13 17:09:56 -05:00
Branson
c4e62cdeab Fix syntax error 2026-01-13 16:56:51 -05:00
bransoned
183f59993f Change repeated array allocation into predefined constant 2026-01-13 21:39:42 +00:00
bransoned
8a66db915d Remove debug prints, fix Artist search, implement GetArtistAlbumsAsync 2026-01-12 16:10:02 -05:00
V1ck3s
2c5daeefed docs: add Narjo to iOS compatible clients section 2026-01-12 19:50:46 +01:00
V1ck3s
c8c4fd8322 fix: add HTTP Range header forwarding for iOS clients 2026-01-12 19:35:29 +01:00
V1ck3s
7a08f15523 fix: prevent duplicate downloads from concurrent stream requests 2026-01-12 18:43:47 +01:00
V1ck3s
1d4c46b4f3 fix: use album artist for folder organization in Album download mode 2026-01-12 18:43:47 +01:00
V1ck3s
62246cc48f fix: prevent duplicate downloads in album mode 2026-01-12 18:43:47 +01:00
bransoned
428b7f06c4 #31 (upstream) Add http context handling to tests 2026-01-12 01:30:18 +00:00
bransoned
ad4a3af41e #31 (upstream) Fix iOS client local streaming issues 2026-01-12 01:30:14 +00:00
bransoned
bdac8ac132 #31 (upstream) Add http context handling to tests 2026-01-11 19:03:56 -05:00
bransoned
7ed4212b53 Merge branch 'dev' of github.com:bransoned/octo-fiesta into dev 2026-01-11 18:48:25 -05:00
bransoned
12598d17e2 #31 (upstream) Fix iOS client local streaming issues 2026-01-11 18:47:13 -05:00
Branson
714e465996 Update Docker workflow for version tagging 2026-01-10 22:44:26 -05:00
bransoned
45363ebe3b Make prod default behavior 2026-01-10 21:16:07 -05:00
bransoned
74d02db58a Add SquidWTF functionality to subsonic music services 2026-01-10 21:04:05 -05:00
bransoned
81979713ef Update appsettings file and make SquidWTF default service 2026-01-10 21:03:07 -05:00
bransoned
d8d046f6ef Add basic settings file for constants 2026-01-10 21:00:28 -05:00
bransoned
e1db12a165 Add logic to allow for new SquidWTF service 2026-01-10 20:59:16 -05:00
bransoned
ab898ef611 Add startup validation for metadata/download services 2026-01-10 20:58:28 -05:00
bransoned
4a5f2591f7 Add mostly functional metadata service that queries SquidWTF Tidal proxy 2026-01-10 20:56:22 -05:00
bransoned
f3e3c0bfa1 Add download service module to allow for downloading from SquidWTF API 2026-01-10 20:55:37 -05:00
V1ck3s
61a21b0e0c refactor: centralize cache path logic and add TMPDIR documentation 2026-01-11 00:29:25 +01:00
V1ck3s
dbb1964f46 feat: add cache-only storage mode for streaming without library persistence 2026-01-11 00:29:25 +01:00
Vickes
318ce96cbc refactor: implement provider-based service architecture (#40)
Comprehensive refactoring to improve maintainability, reduce code duplication, and facilitate the addition of new music providers.

Key architectural improvements:
- Introduced BaseDownloadService template method pattern, eliminating ~80% code duplication between Deezer and Qobuz services
- Organized services by provider (Services/Deezer/, Services/Qobuz/, Services/Local/, Services/Subsonic/)
- Extracted SubsonicController logic into 4 specialized services, reducing controller size by 43% (1,174 → 666 lines)
- Reorganized Models into domain-driven subdirectories (Domain/, Settings/, Download/, Search/)
- Implemented Result<T> pattern and GlobalExceptionHandler for consistent error handling
- Created unified validation architecture with IStartupValidator interface

Testing & Quality:
- Increased test coverage from ~30 to 127 tests (+323%)
- Added comprehensive test suites for QobuzDownloadService and Subsonic services
- All tests passing, zero build errors

Impact:
- Net reduction of 343 lines while adding more functionality
- No breaking changes - Subsonic API surface unchanged
- Foundation ready for easy addition of new providers (Tidal, Spotify, etc.)
2026-01-08 23:57:09 +01:00
V1ck3s
1c56534e26 ci: split workflows into separate CI and Docker jobs
- Split ci.yml into two workflows for cleaner PR checks
- ci.yml: runs build-and-test on PRs and pushes (no Docker)
- docker.yml: runs build-and-test + Docker build/push on merges, tags, and manual triggers
- Eliminates 'docker: skipping' status on open PRs
2026-01-08 23:51:57 +01:00
V1ck3s
6344198572 docs: update README to reflect refactored service architecture 2026-01-08 23:31:33 +01:00
V1ck3s
5d93af6aa0 test: add comprehensive test suite for QobuzDownloadService
- Add 15 unit tests covering authentication, download logic, and configuration
- Test IsAvailableAsync with various credential combinations
- Test download flow for unsupported providers, existing files, and missing songs
- Test album background download functionality
- Test quality format configuration (FLAC, MP3, default)
- All tests passing (127 total tests)
2026-01-08 22:51:37 +01: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
09ee618ac8 refactor: extract PathHelper to Services/Common for reusability
Moved PathHelper from DeezerDownloadService to Services/Common/ to:
- Remove awkward dependency of Qobuz on Deezer namespace
- Make path utilities reusable by all services
- Improve code organization and clarify dependencies

Updated imports in DeezerDownloadService, QobuzDownloadService,
BaseDownloadService, and DeezerDownloadServiceTests.
2026-01-08 20:00: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
c38291efa3 refactor: extract BaseDownloadService to eliminate code duplication between providers 2026-01-08 19:39:06 +01:00