/
zykovad
/
final_project_mobile_dev
Обзор
Документация
Войти
/
zykovad
/
final_project_mobile_dev
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
app/src/main/java/database/SupabaseClient.java
86 строк
4 KB
Darya
project done
21 дек 2025, 17:59
21 дек 2025, 17:59
ef5314b
Код
Авторство
О чём код?
package database; import android.content.Context; import android.util.Log; import java.io.IOException; import java.util.concurrent.TimeUnit; import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; public class SupabaseClient { private static final String TAG = "SupabaseClient"; private static final String BASE_URL = "https://nmgeqrruincbljzjvlby.supabase.co/rest/v1/"; private static final String API_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im5tZ2VxcnJ1aW5jYmxqemp2bGJ5Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NjU1ODY1MzAsImV4cCI6MjA4MTE2MjUzMH0.1IKtSqeelsITrl32YwxKp3AxOsI5AqTR7qALNxTMGy4"; private static Retrofit retrofit = null; private static SupabaseApi api = null; public static void init(Context context) { if (retrofit == null) { // Создаем OkHttpClient с интерсепторами OkHttpClient.Builder httpClient = new OkHttpClient.Builder() .connectTimeout(30, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .writeTimeout(30, TimeUnit.SECONDS); // Добавляем интерсептор для добавления заголовков httpClient.addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request original = chain.request(); // Создаем новый запрос с добавленными заголовками Request.Builder requestBuilder = original.newBuilder() .addHeader("apikey", API_KEY) .addHeader("Content-Type", "application/json") .addHeader("Prefer", "return=representation"); // Добавляем Authorization header если пользователь авторизован String accessToken = getAccessToken(context); if (accessToken != null && !accessToken.isEmpty()) { requestBuilder.addHeader("Authorization", "Bearer " + accessToken); Log.d(TAG, "Adding auth token to request"); } Request request = requestBuilder.build(); return chain.proceed(request); } }); // Создаем Retrofit экземпляр retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .client(httpClient.build()) .addConverterFactory(GsonConverterFactory.create()) .build(); api = retrofit.create(SupabaseApi.class); Log.d(TAG, "SupabaseClient initialized successfully"); } } // Получение токена доступа private static String getAccessToken(Context context) { return context.getSharedPreferences("auth_prefs", Context.MODE_PRIVATE) .getString("access_token", null); } // Получение API интерфейса public static SupabaseApi getApi() { if (api == null) { throw new IllegalStateException("SupabaseClient not initialized. Call init() first."); } return api; } // Очистка клиента (при logout) public static void clear() { retrofit = null; api = null; } }