/*
 * Copyright 2017 Stefan Geyer <stefangeyer at outlook.com>
 *
 * 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 com.exsoloscript.challonge.handler.call;

import com.exsoloscript.challonge.util.ErrorUtil;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import retrofit2.Call;

/**
 * This factory is used to inject the ErrorUtil with Guice and to hand it over to the API calls
 *
 * @author EXSolo
 * @version 20160822.1
 */
@Singleton
public class RetrofitChallongeApiCallFactory {

    @Inject
    private ErrorUtil errorUtil;

    /**
     * Creates a new API call
     *
     * @param retrofitCall retrofitCall
     * @param <T>          Type of the call
     * @return RetrofitChallongeApiCall
     */
    <T> RetrofitChallongeApiCall<T> createApiCall(Call<T> retrofitCall) {
        return new RetrofitChallongeApiCall<>(retrofitCall, this.errorUtil);
    }

}
