package com.androideasyapps.phoenix.services; import com.androideasyapps.phoenix.dao.H2PersistenceManager; import com.androideasyapps.phoenix.services.sagetv.SageTVRequestInterceptor; import com.androideasyapps.phoenix.services.sagetv.SageTVService; import com.androideasyapps.phoenix.services.sagetv.model.MediaFile; import com.androideasyapps.phoenix.services.sagetv.model.MediaFileResults; import com.androideasyapps.phoenix.sync.SageTVSync; import com.androideasyapps.phoenix.sync.SyncOptions; import com.androideasyapps.phoenix.util.OracleBase64Encoder; import org.junit.Test; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import retrofit.RestAdapter; import rx.Observable; import rx.functions.Action1; public class SageTVServiceTest { @Test public void testGetMediaFiles() throws Exception { SageTVService service = newService(); Observable<MediaFileResults> results = service.getMediaFilesObservable("V", 0, 10); results.subscribe(new Action1<MediaFileResults>() { @Override public void call(MediaFileResults mediaFileResults) { List<MediaFile> files = mediaFileResults.getResult(); for (MediaFile mf: files) { System.out.println("MediaFile: " + mf.MediaFileID + "; Title: " + mf.MediaFileMetadataProperties.MediaTitle); } } }); SageTVSync sync = new SageTVSync(); sync.syncCollection(service, newPersistenceManager(), new SyncOptions()).subscribe(new Action1<com.androideasyapps.phoenix.dao.MediaFile>() { @Override public void call(com.androideasyapps.phoenix.dao.MediaFile mediaFile) { System.out.println("."); } }); Thread.currentThread().sleep(100000); } SageTVService newService() { RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint("http://192.168.1.10:8080/sagex") .setLogLevel(RestAdapter.LogLevel.NONE) .setRequestInterceptor(new SageTVRequestInterceptor(new SageTVRequestInterceptor.Credentials("sage", "frey"), new OracleBase64Encoder())) .build(); SageTVService service = restAdapter.create(SageTVService.class); return service; } Future<H2PersistenceManager> newPersistenceManager() { String jdbcUrl = "jdbc:h2:" + "/tmp/testsage.db" + ";TRACE_LEVEL_FILE=0;CREATE=true"; final H2PersistenceManager daoManager = new H2PersistenceManager(jdbcUrl); try { daoManager.createTables(); } catch (Exception e) { e.printStackTrace(); } return new Future<H2PersistenceManager>() { @Override public boolean cancel(boolean mayInterruptIfRunning) { return false; } @Override public boolean isCancelled() { return false; } @Override public boolean isDone() { return true; } @Override public H2PersistenceManager get() throws InterruptedException, ExecutionException { return daoManager; } @Override public H2PersistenceManager get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { return daoManager; } }; } }