Skip to content

Commit

Permalink
[receiver] add logging
Browse files Browse the repository at this point in the history
  • Loading branch information
capcom6 committed Jan 2, 2025
1 parent 5b06bab commit bb0fc53
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 10 deletions.
20 changes: 12 additions & 8 deletions app/src/main/java/me/capcom/smsgateway/modules/logs/LogsService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,20 +31,24 @@ class LogsService(
return dao.selectByPeriod(from, to)
}

suspend fun insert(
fun insert(
priority: LogEntry.Priority,
module: String,
message: String,
context: Any? = null
) {
dao.insert(
LogEntry(
priority,
module,
message,
context = context?.let { gson.toJsonTree(it) }
try {
dao.insert(
LogEntry(
priority,
module,
message,
context = context?.let { gson.toJsonTree(it) }
)
)
)
} catch (e: Exception) {
e.printStackTrace()
}
}

suspend fun truncate() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ interface LogEntriesDao {
fun selectLast(): LiveData<List<LogEntry>>

@Insert
suspend fun insert(entry: LogEntry)
fun insert(entry: LogEntry)

@Query("DELETE FROM logs_entries WHERE createdAt < :until")
suspend fun truncate(until: Long)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,6 @@ import org.koin.dsl.module

val receiverModule = module {
singleOf(::ReceiverService)
}
}

val MODULE_NAME = "receiver"
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import android.content.Context
import android.os.Build
import android.provider.Telephony
import me.capcom.smsgateway.helpers.SubscriptionsHelper
import me.capcom.smsgateway.modules.logs.LogsService
import me.capcom.smsgateway.modules.logs.db.LogEntry
import me.capcom.smsgateway.modules.receiver.data.InboxMessage
import me.capcom.smsgateway.modules.receiver.events.MessageReceivedEvent
import me.capcom.smsgateway.modules.webhooks.WebHooksService
Expand All @@ -14,15 +16,37 @@ import java.util.Date

class ReceiverService : KoinComponent {
private val webHooksService: WebHooksService by inject()
private val logsService: LogsService by inject()

fun export(context: Context, period: Pair<Date, Date>) {
logsService.insert(
LogEntry.Priority.DEBUG,
MODULE_NAME,
"ReceiverService::export - start",
mapOf("period" to period)
)

select(context, period)
.forEach {
process(context, it)
}

logsService.insert(
LogEntry.Priority.DEBUG,
MODULE_NAME,
"ReceiverService::export - end",
mapOf("period" to period)
)
}

fun process(context: Context, message: InboxMessage) {
logsService.insert(
LogEntry.Priority.DEBUG,
MODULE_NAME,
"ReceiverService::process - message received",
mapOf("message" to message)
)

val event = MessageReceivedEvent(
message = message.body,
phoneNumber = message.address,
Expand All @@ -36,9 +60,23 @@ class ReceiverService : KoinComponent {
)

webHooksService.emit(WebHookEvent.SmsReceived, event)

logsService.insert(
LogEntry.Priority.DEBUG,
MODULE_NAME,
"ReceiverService::process - message processed",
mapOf("event" to event)
)
}

fun select(context: Context, period: Pair<Date, Date>): List<InboxMessage> {
logsService.insert(
LogEntry.Priority.DEBUG,
MODULE_NAME,
"ReceiverService::select - start",
mapOf("period" to period)
)

val projection = mutableListOf(
Telephony.Sms._ID,
Telephony.Sms.ADDRESS,
Expand Down Expand Up @@ -84,6 +122,13 @@ class ReceiverService : KoinComponent {
}
}

logsService.insert(
LogEntry.Priority.DEBUG,
MODULE_NAME,
"ReceiverService::select - end",
mapOf("messages" to messages.size)
)

return messages
}
}

0 comments on commit bb0fc53

Please sign in to comment.