// Path: lib/src/main/java/cz/helmisek/android/androidviper/core/interactor/Interactor.java
// public abstract class Interactor<IDC> implements InteractorContract
// {
// 	/**
// 	 * Contract which provides all descendants with all
// 	 * the basic needs such as {@link Context} or {@link Resources}
// 	 * to work with system to gather data
// 	 * without any further necessary implementation out of the box.
// 	 */
// 	private InteractorContract mInteractorContract;
// 
// 
// 	public abstract IDC initDataContract();
// 
// 
// 	private IDC mInteractorDataContract;
// 
// 
// 	/**
// 	 * Bind an already implemented contract.
// 	 *
// 	 * @param contract An already implemented contract.
// 	 */
// 	public void bind(final InteractorContract contract)
// 	{
// 		this.mInteractorContract = contract;
// 	}
// 
// 
// 	/**
// 	 * Get an already implemented data contract.
// 	 */
// 	public IDC getInteractorDataContract()
// 	{
// 		return this.mInteractorDataContract;
// 	}
// 
// 
// 	/**
// 	 * Initialization method, being run right after {@link #bind(InteractorContract)}.
// 	 * If you need to set some more additional things to your Interactor instance you should do it in here.
// 	 * At this point unlike by using constructor, you have access to {@link InteractorContract} methods.
// 	 */
// 	public void init()
// 	{
// 		this.mInteractorDataContract = initDataContract();
// 	}
// 
// 
// 	@Override
// 	public Context getContext()
// 	{
// 		return this.mInteractorContract.getContext();
// 	}
// 
// 
// 	@Override
// 	public Resources getResources()
// 	{
// 		return this.mInteractorContract.getResources();
// 	}
// }


import java.io.IOException;
import cz.helmisek.android.androidviper.core.interactor.Interactor;
import cz.helmisek.android.androidvipersample.api.ApiConfig;
import okhttp3.HttpUrl;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import rx.schedulers.Schedulers;
package cz.helmisek.android.androidvipersample.core.interactor;




abstract class RetrofitApiInteractor<IDC> extends Interactor<IDC>
{

	private static final String QUERY_PARAM_APP_ID = "appid";
	private Retrofit mRetrofit;


	RetrofitApiInteractor()
	{
		this.mRetrofit = getRetrofitBuilder().build();
	}


	private Retrofit.Builder getRetrofitBuilder()
	{
		final Retrofit.Builder retrofitBuilder = new Retrofit.Builder();
// Path: lib/src/main/java/cz/helmisek/android/androidviper/core/interactor/Interactor.java
// public abstract class Interactor<IDC> implements InteractorContract
// {
// 	/**
// 	 * Contract which provides all descendants with all
// 	 * the basic needs such as {@link Context} or {@link Resources}
// 	 * to work with system to gather data
// 	 * without any further necessary implementation out of the box.
// 	 */
// 	private InteractorContract mInteractorContract;
// 
// 
// 	public abstract IDC initDataContract();
// 
// 
// 	private IDC mInteractorDataContract;
// 
// 
// 	/**
// 	 * Bind an already implemented contract.
// 	 *
// 	 * @param contract An already implemented contract.
// 	 */
// 	public void bind(final InteractorContract contract)
// 	{
// 		this.mInteractorContract = contract;
// 	}
// 
// 
// 	/**
// 	 * Get an already implemented data contract.
// 	 */
// 	public IDC getInteractorDataContract()
// 	{
// 		return this.mInteractorDataContract;
// 	}
// 
// 
// 	/**
// 	 * Initialization method, being run right after {@link #bind(InteractorContract)}.
// 	 * If you need to set some more additional things to your Interactor instance you should do it in here.
// 	 * At this point unlike by using constructor, you have access to {@link InteractorContract} methods.
// 	 */
// 	public void init()
// 	{
// 		this.mInteractorDataContract = initDataContract();
// 	}
// 
// 
// 	@Override
// 	public Context getContext()
// 	{
// 		return this.mInteractorContract.getContext();
// 	}
// 
// 
// 	@Override
// 	public Resources getResources()
// 	{
// 		return this.mInteractorContract.getResources();
// 	}
// }


// Path: sample/src/main/java/cz/helmisek/android/androidvipersample/core/interactor/RetrofitApiInteractor.java
import java.io.IOException;
import cz.helmisek.android.androidviper.core.interactor.Interactor;
import cz.helmisek.android.androidvipersample.api.ApiConfig;
import okhttp3.HttpUrl;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import rx.schedulers.Schedulers;

package cz.helmisek.android.androidvipersample.core.interactor;




abstract class RetrofitApiInteractor<IDC> extends Interactor<IDC>
{

	private static final String QUERY_PARAM_APP_ID = "appid";
	private Retrofit mRetrofit;


	RetrofitApiInteractor()
	{
		this.mRetrofit = getRetrofitBuilder().build();
	}


	private Retrofit.Builder getRetrofitBuilder()
	{
		final Retrofit.Builder retrofitBuilder = new Retrofit.Builder();
		final OkHttpClient.Builder httpClient = new OkHttpClient.Builder();