package io.hefuyi.listener.mvp.usecase;
import io.hefuyi.listener.api.model.ArtistInfo;
import io.hefuyi.listener.respository.interfaces.Repository;
import rx.Observable;
/**
* Created by hefuyi on 2016/11/13.
*/
public class GetArtistInfo extends UseCase<GetArtistInfo.RequestValues,GetArtistInfo.ResponseValue>{
private final Repository mRepository;
public GetArtistInfo(Repository repository) {
mRepository = repository;
}
@Override
public ResponseValue execute(RequestValues requestValues) {
return new ResponseValue(mRepository.getArtistInfo(requestValues.getArtistName()));
}
public static final class RequestValues implements UseCase.RequestValues{
private final String artistName;
public RequestValues(String name){
artistName = name;
}
public String getArtistName() {
return artistName;
}
}
public static final class ResponseValue implements UseCase.ResponseValue {
private final Observable<ArtistInfo> mArtistInfoObservable;
public ResponseValue(Observable<ArtistInfo> artistInfoObservable) {
mArtistInfoObservable = artistInfoObservable;
}
public Observable<ArtistInfo> getArtistInfo(){
return mArtistInfoObservable;
}
}
}