feat: radio

This commit is contained in:
antonio
2023-05-07 17:11:34 +02:00
parent 1deb9ed3d7
commit a1ee70c24f
16 changed files with 478 additions and 11 deletions

View File

@@ -3,6 +3,7 @@ package com.cappielloantonio.play.subsonic;
import com.cappielloantonio.play.subsonic.api.albumsonglist.AlbumSongListClient;
import com.cappielloantonio.play.subsonic.api.bookmarks.BookmarksClient;
import com.cappielloantonio.play.subsonic.api.browsing.BrowsingClient;
import com.cappielloantonio.play.subsonic.api.internetradio.InternetRadioClient;
import com.cappielloantonio.play.subsonic.api.mediaannotation.MediaAnnotationClient;
import com.cappielloantonio.play.subsonic.api.medialibraryscanning.MediaLibraryScanningClient;
import com.cappielloantonio.play.subsonic.api.mediaretrieval.MediaRetrievalClient;
@@ -31,6 +32,7 @@ public class Subsonic {
private PodcastClient podcastClient;
private MediaLibraryScanningClient mediaLibraryScanningClient;
private BookmarksClient bookmarksClient;
private InternetRadioClient internetRadioClient;
public Subsonic(SubsonicPreferences preferences) {
this.preferences = preferences;
@@ -110,6 +112,13 @@ public class Subsonic {
return bookmarksClient;
}
public InternetRadioClient getInternetRadioClient() {
if (internetRadioClient == null) {
internetRadioClient = new InternetRadioClient(this);
}
return internetRadioClient;
}
public String getUrl() {
String url = preferences.getServerUrl() + "/rest/";
return url.replace("//rest", "/rest");

View File

@@ -0,0 +1,41 @@
package com.cappielloantonio.play.subsonic.api.internetradio;
import android.util.Log;
import com.cappielloantonio.play.subsonic.RetrofitClient;
import com.cappielloantonio.play.subsonic.Subsonic;
import com.cappielloantonio.play.subsonic.base.ApiResponse;
import retrofit2.Call;
public class InternetRadioClient {
private static final String TAG = "InternetRadioClient";
private final Subsonic subsonic;
private final InternetRadioService internetRadioService;
public InternetRadioClient(Subsonic subsonic) {
this.subsonic = subsonic;
this.internetRadioService = new RetrofitClient(subsonic).getRetrofit().create(InternetRadioService.class);
}
public Call<ApiResponse> getInternetRadioStations() {
Log.d(TAG, "getInternetRadioStations()");
return internetRadioService.getInternetRadioStations(subsonic.getParams());
}
public Call<ApiResponse> createInternetRadioStation(String streamUrl, String name, String homepageUrl) {
Log.d(TAG, "createInternetRadioStation()");
return internetRadioService.createInternetRadioStation(subsonic.getParams(), streamUrl, name, homepageUrl);
}
public Call<ApiResponse> updateInternetRadioStation(String id, String streamUrl, String name, String homepageUrl) {
Log.d(TAG, "updateInternetRadioStation()");
return internetRadioService.updateInternetRadioStation(subsonic.getParams(), id, streamUrl, name, homepageUrl);
}
public Call<ApiResponse> deleteInternetRadioStation(String id) {
Log.d(TAG, "deleteInternetRadioStation()");
return internetRadioService.deleteInternetRadioStation(subsonic.getParams(), id);
}
}

View File

@@ -0,0 +1,24 @@
package com.cappielloantonio.play.subsonic.api.internetradio;
import com.cappielloantonio.play.subsonic.base.ApiResponse;
import java.util.Map;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
public interface InternetRadioService {
@GET("getInternetRadioStations")
Call<ApiResponse> getInternetRadioStations(@QueryMap Map<String, String> params);
@GET("createInternetRadioStation")
Call<ApiResponse> createInternetRadioStation(@QueryMap Map<String, String> params, @Query("streamUrl") String streamUrl, @Query("name") String name, @Query("homepageUrl") String homepageUrl);
@GET("updateInternetRadioStation")
Call<ApiResponse> updateInternetRadioStation(@QueryMap Map<String, String> params, @Query("id") String id, @Query("streamUrl") String streamUrl, @Query("name") String name, @Query("homepageUrl") String homepageUrl);
@GET("deleteInternetRadioStation")
Call<ApiResponse> deleteInternetRadioStation(@QueryMap Map<String, String> params, @Query("id") String id);
}

View File

@@ -1,6 +1,10 @@
package com.cappielloantonio.play.subsonic.models
class InternetRadioStation {
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@Parcelize
class InternetRadioStation : Parcelable {
var id: String? = null
var name: String? = null
var streamUrl: String? = null

View File

@@ -1,5 +1,8 @@
package com.cappielloantonio.play.subsonic.models
import com.google.gson.annotations.SerializedName
class InternetRadioStations {
@SerializedName("internetRadioStation")
var internetRadioStations: List<InternetRadioStation>? = null
}