package es.globergy.tknative.network import okhttp3.MultipartBody import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor import retrofit2.Response import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import retrofit2.http.Body import retrofit2.http.Header import retrofit2.http.Multipart import retrofit2.http.POST import retrofit2.http.Part data class AuthRequest( val email: String, val password: String, ) data class AuthResponse( val ok: Boolean, val token: String?, val access_token: String?, val error: String?, ) data class OcrParsed( val expense_date: String?, val merchant: String?, val amount: Double?, val vat_percent: Double?, val category: String?, ) data class OcrData( val parsed: OcrParsed?, ) data class OcrResponse( val ok: Boolean, val data: OcrData?, val error: String?, ) interface TkApiService { @POST("api.php?action=auth.token") suspend fun authToken( @Body request: AuthRequest, ): Response @Multipart @POST("api.php?action=ocr.extract") suspend fun ocrExtract( @Header("Authorization") authorization: String, @Part ticket: MultipartBody.Part, ): Response } object TkApi { private const val BASE_URL = "https://globergycloud.es/GSC/TK/" val service: TkApiService by lazy { val logging = HttpLoggingInterceptor().apply { level = HttpLoggingInterceptor.Level.BASIC } val client = OkHttpClient.Builder() .addInterceptor(logging) .build() Retrofit.Builder() .baseUrl(BASE_URL) .client(client) .addConverterFactory(GsonConverterFactory.create()) .build() .create(TkApiService::class.java) } }