tempus/app/src/main/java/com/cappielloantonio/tempo/subsonic/Subsonic.java

145 lines
5 KiB
Java
Raw Normal View History

2023-06-17 15:30:23 +02:00
package com.cappielloantonio.tempo.subsonic;
2021-07-24 12:27:45 +02:00
2023-06-17 15:30:23 +02:00
import com.cappielloantonio.tempo.subsonic.api.albumsonglist.AlbumSongListClient;
import com.cappielloantonio.tempo.subsonic.api.bookmarks.BookmarksClient;
import com.cappielloantonio.tempo.subsonic.api.browsing.BrowsingClient;
import com.cappielloantonio.tempo.subsonic.api.internetradio.InternetRadioClient;
import com.cappielloantonio.tempo.subsonic.api.mediaannotation.MediaAnnotationClient;
import com.cappielloantonio.tempo.subsonic.api.medialibraryscanning.MediaLibraryScanningClient;
import com.cappielloantonio.tempo.subsonic.api.mediaretrieval.MediaRetrievalClient;
import com.cappielloantonio.tempo.subsonic.api.playlist.PlaylistClient;
import com.cappielloantonio.tempo.subsonic.api.podcast.PodcastClient;
import com.cappielloantonio.tempo.subsonic.api.searching.SearchingClient;
import com.cappielloantonio.tempo.subsonic.api.system.SystemClient;
import com.cappielloantonio.tempo.subsonic.base.Version;
2021-07-24 12:27:45 +02:00
2021-07-24 14:48:33 +02:00
import java.util.HashMap;
2021-07-24 12:27:45 +02:00
import java.util.Map;
public class Subsonic {
private static final Version API_MAX_VERSION = Version.of("1.15.0");
private final Version apiVersion = API_MAX_VERSION;
private final SubsonicPreferences preferences;
2021-07-24 12:27:45 +02:00
2021-07-24 14:48:33 +02:00
private SystemClient systemClient;
private BrowsingClient browsingClient;
private MediaRetrievalClient mediaRetrievalClient;
private PlaylistClient playlistClient;
private SearchingClient searchingClient;
private AlbumSongListClient albumSongListClient;
2021-07-29 15:17:07 +02:00
private MediaAnnotationClient mediaAnnotationClient;
private PodcastClient podcastClient;
private MediaLibraryScanningClient mediaLibraryScanningClient;
private BookmarksClient bookmarksClient;
2023-05-07 17:11:34 +02:00
private InternetRadioClient internetRadioClient;
2021-07-24 14:48:33 +02:00
2023-03-10 15:21:02 +01:00
public Subsonic(SubsonicPreferences preferences) {
2021-07-24 12:27:45 +02:00
this.preferences = preferences;
}
public Version getApiVersion() {
return apiVersion;
}
2021-07-24 14:48:33 +02:00
public SystemClient getSystemClient() {
if (systemClient == null) {
2023-03-10 15:21:02 +01:00
systemClient = new SystemClient(this);
2021-07-24 14:48:33 +02:00
}
return systemClient;
}
2021-07-24 12:27:45 +02:00
public BrowsingClient getBrowsingClient() {
if (browsingClient == null) {
2023-03-10 15:21:02 +01:00
browsingClient = new BrowsingClient(this);
}
return browsingClient;
}
public MediaRetrievalClient getMediaRetrievalClient() {
if (mediaRetrievalClient == null) {
2023-03-10 15:21:02 +01:00
mediaRetrievalClient = new MediaRetrievalClient(this);
}
return mediaRetrievalClient;
}
public PlaylistClient getPlaylistClient() {
if (playlistClient == null) {
2023-03-10 15:21:02 +01:00
playlistClient = new PlaylistClient(this);
}
return playlistClient;
}
public SearchingClient getSearchingClient() {
if (searchingClient == null) {
2023-03-10 15:21:02 +01:00
searchingClient = new SearchingClient(this);
}
return searchingClient;
}
public AlbumSongListClient getAlbumSongListClient() {
if (albumSongListClient == null) {
2023-03-10 15:21:02 +01:00
albumSongListClient = new AlbumSongListClient(this);
}
return albumSongListClient;
}
2021-07-29 15:17:07 +02:00
public MediaAnnotationClient getMediaAnnotationClient() {
if (mediaAnnotationClient == null) {
2023-03-10 15:21:02 +01:00
mediaAnnotationClient = new MediaAnnotationClient(this);
2021-07-29 15:17:07 +02:00
}
return mediaAnnotationClient;
}
public PodcastClient getPodcastClient() {
if (podcastClient == null) {
2023-03-10 15:21:02 +01:00
podcastClient = new PodcastClient(this);
}
return podcastClient;
}
2021-07-29 15:17:07 +02:00
public MediaLibraryScanningClient getMediaLibraryScanningClient() {
if (mediaLibraryScanningClient == null) {
2023-03-10 15:21:02 +01:00
mediaLibraryScanningClient = new MediaLibraryScanningClient(this);
}
return mediaLibraryScanningClient;
}
public BookmarksClient getBookmarksClient() {
if (bookmarksClient == null) {
bookmarksClient = new BookmarksClient(this);
}
return bookmarksClient;
}
2023-05-07 17:11:34 +02:00
public InternetRadioClient getInternetRadioClient() {
if (internetRadioClient == null) {
internetRadioClient = new InternetRadioClient(this);
}
return internetRadioClient;
}
2021-07-24 14:48:33 +02:00
public String getUrl() {
String url = preferences.getServerUrl() + "/rest/";
return url.replace("//rest", "/rest");
2021-07-24 14:48:33 +02:00
}
2021-07-24 12:27:45 +02:00
2021-07-24 14:48:33 +02:00
public Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("u", preferences.getUsername());
if (preferences.getAuthentication().getPassword() != null)
params.put("p", preferences.getAuthentication().getPassword());
if (preferences.getAuthentication().getSalt() != null)
params.put("s", preferences.getAuthentication().getSalt());
if (preferences.getAuthentication().getToken() != null)
params.put("t", preferences.getAuthentication().getToken());
2021-07-24 14:48:33 +02:00
params.put("v", getApiVersion().getVersionString());
params.put("c", preferences.getClientName());
params.put("f", "json");
2021-07-24 12:27:45 +02:00
2021-07-24 14:48:33 +02:00
return params;
2021-07-24 12:27:45 +02:00
}
}