// Path: data/src/main/java/data/cache/RxProviders.java
// public interface RxProviders {
//     Observable<UserDemoEntity> getSelectedUserDemoList(Observable<UserDemoEntity> oUserSelected, EvictProvider evictProvider);
// }
// 
// Path: data/src/main/java/data/net/RestApi.java
// public interface RestApi {
//     String URL_BASE = "https://api.github.com";
//     String HEADER_API_VERSION = "Accept: application/vnd.github.v3+json";
// 
//     @Headers({HEADER_API_VERSION})
//     @GET("/users/{username}") Observable<Response<UserDemoEntity>> getUser(@Path("username") String username);
// 
//     @Headers({HEADER_API_VERSION})
//     @GET("/users") Observable<Response<List<UserDemoEntity>>> getUsers();
// }
// 
// Path: domain/src/main/java/domain/foundation/Repository.java
// public interface Repository {
// }


import com.google.gson.Gson;
import com.google.gson.JsonParseException;
import java.io.IOException;
import data.cache.RxProviders;
import data.net.RestApi;
import domain.foundation.Repository;
import lombok.Data;
import retrofit2.Response;
import rx.Observable;
/*
 * Copyright 2015 RefineriaWeb
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package data.sections;





public abstract class DataRepository implements Repository {
    protected final RestApi restApi;
    protected final RxProviders rxProviders;
    protected final UI UI;

    public DataRepository(RestApi restApi, RxProviders rxProviders, UI ui) {
        this.restApi = restApi;
        this.rxProviders = rxProviders;
        this.UI = ui;
    }

    protected void handleError(Response response) {
        if (response.isSuccess()) return;

        try {
            ResponseError responseError = new Gson().fromJson(response.errorBody().string(), ResponseError.class);
            throw new RuntimeException(responseError.getMessage());
        } catch (JsonParseException |IOException exception) {
// Path: data/src/main/java/data/cache/RxProviders.java
// public interface RxProviders {
//     Observable<UserDemoEntity> getSelectedUserDemoList(Observable<UserDemoEntity> oUserSelected, EvictProvider evictProvider);
// }
// 
// Path: data/src/main/java/data/net/RestApi.java
// public interface RestApi {
//     String URL_BASE = "https://api.github.com";
//     String HEADER_API_VERSION = "Accept: application/vnd.github.v3+json";
// 
//     @Headers({HEADER_API_VERSION})
//     @GET("/users/{username}") Observable<Response<UserDemoEntity>> getUser(@Path("username") String username);
// 
//     @Headers({HEADER_API_VERSION})
//     @GET("/users") Observable<Response<List<UserDemoEntity>>> getUsers();
// }
// 
// Path: domain/src/main/java/domain/foundation/Repository.java
// public interface Repository {
// }


// Path: data/src/main/java/data/sections/DataRepository.java
import com.google.gson.Gson;
import com.google.gson.JsonParseException;
import java.io.IOException;
import data.cache.RxProviders;
import data.net.RestApi;
import domain.foundation.Repository;
import lombok.Data;
import retrofit2.Response;
import rx.Observable;

/*
 * Copyright 2015 RefineriaWeb
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package data.sections;





public abstract class DataRepository implements Repository {
    protected final RestApi restApi;
    protected final RxProviders rxProviders;
    protected final UI UI;

    public DataRepository(RestApi restApi, RxProviders rxProviders, UI ui) {
        this.restApi = restApi;
        this.rxProviders = rxProviders;
        this.UI = ui;
    }

    protected void handleError(Response response) {
        if (response.isSuccess()) return;

        try {
            ResponseError responseError = new Gson().fromJson(response.errorBody().string(), ResponseError.class);
            throw new RuntimeException(responseError.getMessage());
        } catch (JsonParseException |IOException exception) {
            throw new RuntimeException();