/// <summary>
        ///     Initializes a new instance of <see cref="BeatsMusicClient" /> for read-only operations.
        /// </summary>
        /// <param name="clientId">Beats Music API client ID.</param>
        /// <param name="redirectUri">Beats Music Redirect Uri.</param>
        public BeatsMusicClient(string clientId, string redirectUri)
        {
            _authorization = new Authorization(redirectUri, clientId);

            _httpBeatsMusicEngine = new HttpBeatsMusicEngine(new HttpClientAccessor(), _authorization);

            _beatsMusicManager = new BeatsMusicManager(_httpBeatsMusicEngine, new JsonBeatsMusicEngine());
            _search = new Lazy<SearchEndpoint>(() => new SearchEndpoint(_beatsMusicManager));
            _playlists = new Lazy<PlaylistsEndpoint>(() => new PlaylistsEndpoint(_beatsMusicManager));
            _albums = new Lazy<AlbumsEndpoint>(() => new AlbumsEndpoint(_beatsMusicManager));
            _artists = new Lazy<ArtistsEndpoint>(() => new ArtistsEndpoint(_beatsMusicManager));
            _highlights = new Lazy<HighlightsEndpoint>(() => new HighlightsEndpoint(_beatsMusicManager));
            _follow = new Lazy<FollowEndpoint>(() => new FollowEndpoint(_beatsMusicManager));
            _genre = new Lazy<GenreEndpoint>(() => new GenreEndpoint(_beatsMusicManager));
            _audio = new Lazy<AudioEndpoint>(() => new AudioEndpoint(_beatsMusicManager));
            _ratings = new Lazy<RatingsEndpoint>(()=> new RatingsEndpoint(_beatsMusicManager));
            _me = new Lazy<MeEndpoint>(() => new MeEndpoint(_beatsMusicManager));
            _images = new Lazy<ImagesEndpoint>(() => new ImagesEndpoint(_beatsMusicManager));
            _tracks = new Lazy<TracksEndpoint>(() => new TracksEndpoint(_beatsMusicManager));
        }
 public HttpBeatsMusicEngine(IHttpClientAccessor clientAccessor, Authorization authorization)
 {
     _clientAccessor = clientAccessor;
     _authorization = authorization;
 }