inv/claude/Android_ApiService.kt
2026-01-31 22:18:30 +09:00

104 lines
2.9 KiB
Kotlin

// app/src/main/java/com/example/mobilepos/data/api/SyncApiService.kt
package com.example.mobilepos.data.api
import retrofit2.Response
import retrofit2.http.*
import com.example.mobilepos.data.models.*
import java.util.UUID
interface SyncApiService {
@POST("/api/v1/sync")
suspend fun syncDocuments(
@Header("X-API-Key") apiKey: String,
@Body request: SyncRequestDto
): Response<SyncResponseDto>
@GET("/api/v1/customers")
suspend fun getCustomers(
@Header("X-API-Key") apiKey: String
): Response<CustomerListResponse>
@GET("/api/v1/documents/{id}")
suspend fun getDocument(
@Header("X-API-Key") apiKey: String,
@Path("id") documentId: Int
): Response<DocumentDetailResponse>
@POST("/api/v1/receipts/{invoiceId}")
suspend fun createReceipt(
@Header("X-API-Key") apiKey: String,
@Path("invoiceId") invoiceId: Int
): Response<ReceiptCreateResponse>
@GET("/api/v1/health")
suspend fun healthCheck(
@Header("X-API-Key") apiKey: String
): Response<HealthCheckResponse>
}
// ========== API Response Models ==========
data class CustomerListResponse(
val status: String,
val customers: List<CustomerDto>
)
data class DocumentDetailResponse(
val status: String,
val document: DocumentDto
)
data class ReceiptCreateResponse(
val status: String,
val receiptId: Int,
val message: String
)
data class HealthCheckResponse(
val status: String,
val timestamp: Long
)
// ========== Retrofit Factory ==========
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import com.google.gson.GsonBuilder
object ApiClient {
private var retrofit: Retrofit? = null
fun getClient(baseUrl: String): Retrofit {
if (retrofit == null) {
val httpLoggingInterceptor = HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BODY
}
val okHttpClient = OkHttpClient.Builder()
.addInterceptor(httpLoggingInterceptor)
.connectTimeout(30, java.util.concurrent.TimeUnit.SECONDS)
.readTimeout(30, java.util.concurrent.TimeUnit.SECONDS)
.writeTimeout(30, java.util.concurrent.TimeUnit.SECONDS)
.build()
val gson = GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss")
.create()
retrofit = Retrofit.Builder()
.baseUrl(baseUrl)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(gson))
.build()
}
return retrofit!!
}
fun getSyncApiService(baseUrl: String): SyncApiService {
return getClient(baseUrl).create(SyncApiService::class.java)
}
}