75 lines
2.0 KiB
Kotlin
75 lines
2.0 KiB
Kotlin
package com.intaleq.flashcall
|
|
|
|
import com.google.gson.annotations.SerializedName
|
|
import retrofit2.http.*
|
|
|
|
// --- Data Models ---
|
|
|
|
data class PendingTask(
|
|
@SerializedName("task_id") val taskId: Int?,
|
|
@SerializedName("phone") val phone: String?,
|
|
@SerializedName("caller_id") val callerId: String?,
|
|
@SerializedName("otp") val otp: String?,
|
|
@SerializedName("timeout_seconds") val timeoutSeconds: Int?
|
|
)
|
|
|
|
data class CallDoneRequest(
|
|
@SerializedName("task_id") val taskId: Int,
|
|
@SerializedName("device_id") val deviceId: String,
|
|
@SerializedName("app_key") val appKey: String,
|
|
@SerializedName("result") val result: String
|
|
)
|
|
|
|
data class RegisterRequest(
|
|
@SerializedName("device_id") val deviceId: String,
|
|
@SerializedName("phone_number") val phoneNumber: String,
|
|
@SerializedName("sim_slot") val simSlot: Int,
|
|
@SerializedName("app_key") val appKey: String
|
|
)
|
|
|
|
data class ApiResponse(
|
|
@SerializedName("success") val success: Boolean,
|
|
@SerializedName("message") val message: String?,
|
|
@SerializedName("device_id") val deviceId: String?
|
|
)
|
|
|
|
// --- API Interface ---
|
|
|
|
interface ApiService {
|
|
|
|
/**
|
|
* Polling for a new flash call task
|
|
*/
|
|
@GET("pending-call.php")
|
|
suspend fun pendingCall(
|
|
@Query("device_id") deviceId: String,
|
|
@Query("app_key") appKey: String
|
|
): PendingTask
|
|
|
|
/**
|
|
* Polling for a new SMS task
|
|
*/
|
|
@GET("pending-sms.php")
|
|
suspend fun pendingSms(
|
|
@Query("device_id") deviceId: String,
|
|
@Query("app_key") appKey: String
|
|
): PendingTask
|
|
|
|
/**
|
|
* Reporting the result of a flash call
|
|
*/
|
|
@POST("call-done.php")
|
|
suspend fun callDone(@Body request: CallDoneRequest): ApiResponse
|
|
|
|
/**
|
|
* Reporting the result of an SMS
|
|
*/
|
|
@POST("sms-done.php")
|
|
suspend fun smsDone(@Body request: CallDoneRequest): ApiResponse
|
|
|
|
/**
|
|
* Initial registration of the device
|
|
*/
|
|
@POST("register-device.php")
|
|
suspend fun registerDevice(@Body request: RegisterRequest): ApiResponse
|
|
} |