package com.siim.sendtopulsar.controller;
import android.net.Uri;
import android.util.Log;
import com.siim.sendtopulsar.SendToPulsarApp;
import com.siim.sendtopulsar.api.service.PulsarService;
import com.siim.sendtopulsar.model.command.AddToPlaylistCommand;
import com.siim.sendtopulsar.model.command.ClearPlaylistCommand;
import com.siim.sendtopulsar.model.command.GetActivePlayerIdCommand;
import com.siim.sendtopulsar.model.command.OpenCommand;
import com.siim.sendtopulsar.model.command.StopPlayerCommand;
import retrofit.client.Response;
import rx.Observable;
import rx.Observer;
import rx.schedulers.Schedulers;
public class MagnetController {
private static final String TAG = MagnetController.class.getSimpleName();
private final SendToPulsarApp app;
private final PulsarService pulsarService;
public MagnetController(SendToPulsarApp app, PulsarService pulsarService) {
this.app = app;
this.pulsarService = pulsarService;
}
public void sendToPulsar(final Uri magnetLink) {
pulsarService.getActivePlayerId(new GetActivePlayerIdCommand())
.flatMap(pulsarResponse -> Observable.from(pulsarResponse.getResult()))
.flatMap(playerResult -> {
int playerId = playerResult.getPlayerid();
return pulsarService.stopPlayer(new StopPlayerCommand(playerId));
})
.toList()
.flatMap(pulsarResponse -> pulsarService.clearPlaylist(new ClearPlaylistCommand(1)))
.flatMap(pulsarResponse -> pulsarService.clearPlaylist(new ClearPlaylistCommand(0)))
.flatMap(response -> pulsarService.addToPlaylist(new AddToPlaylistCommand(magnetLink.toString())))
.flatMap(response -> pulsarService.open(new OpenCommand()))
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.subscribe(new Observer<Response>() {
@Override
public void onCompleted() {
Log.d(TAG, "Magnet sending complete");
}
@Override
public void onError(Throwable e) {
Log.e(TAG, "Error sending magnet to pulsar", e);
}
@Override
public void onNext(Response response) {
int status = response.getStatus();
Log.d(TAG, "Got next with status=" + status);
}
});
}
}