package legion.muyue.best2048.network;

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class ApiClient {

    // URL de base de votre API serveur
    private static final String BASE_URL = "https://best2048.legion-muyue.fr/api/";

    private static Retrofit retrofit = null;

    /**
     * Crée et retourne une instance singleton de Retrofit configurée.
     * Inclut un intercepteur pour logger les requêtes/réponses HTTP (utile pour le debug).
     *
     * @return L'instance configurée de Retrofit.
     */
    public static Retrofit getClient() {
        if (retrofit == null) {
            // Intercepteur pour voir les logs HTTP dans Logcat (Niveau BODY pour tout voir)
            HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
            logging.setLevel(HttpLoggingInterceptor.Level.BODY);

            // Client OkHttp avec l'intercepteur
            OkHttpClient client = new OkHttpClient.Builder()
                    .addInterceptor(logging)
                    .build();

            // Construction de l'instance Retrofit
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .client(client) // Utilise le client OkHttp configuré
                    .addConverterFactory(GsonConverterFactory.create()) // Utilise Gson pour parser le JSON
                    .build();
        }
        return retrofit;
    }

    /**
     * Fournit une instance de l'interface ApiService.
     * @return Instance de ApiService.
     */
    public static ApiService getApiService() {
        return getClient().create(ApiService.class);
    }
}