import pykka

import mopidy_subidy
from mopidy import backend
from mopidy_subidy import library, playback, playlists, subsonic_api


class SubidyBackend(pykka.ThreadingActor, backend.Backend):
    def __init__(self, config, audio):
        super().__init__()
        subidy_config = config["subidy"]
        self.subsonic_api = subsonic_api.SubsonicApi(
            url=subidy_config["url"],
            username=subidy_config["username"],
            password=subidy_config["password"],
            app_name=mopidy_subidy.SubidyExtension.dist_name,
            legacy_auth=subidy_config["legacy_auth"],
            api_version=subidy_config["api_version"],
        )
        self.library = library.SubidyLibraryProvider(backend=self)
        self.playback = playback.SubidyPlaybackProvider(
            audio=audio, backend=self
        )
        self.playlists = playlists.SubidyPlaylistsProvider(backend=self)
        self.uri_schemes = ["subidy"]