2022-01-16 00:40:38 +01:00
|
|
|
package io.heckel.ntfy.msg
|
|
|
|
|
2022-01-17 20:06:59 +01:00
|
|
|
import android.util.Base64
|
2022-01-16 00:40:38 +01:00
|
|
|
import com.google.gson.Gson
|
2022-01-18 20:28:48 +01:00
|
|
|
import io.heckel.ntfy.db.Attachment
|
|
|
|
import io.heckel.ntfy.db.Notification
|
2022-01-16 00:40:38 +01:00
|
|
|
import io.heckel.ntfy.util.joinTags
|
|
|
|
import io.heckel.ntfy.util.toPriority
|
|
|
|
|
|
|
|
class NotificationParser {
|
|
|
|
private val gson = Gson()
|
|
|
|
|
|
|
|
fun parse(s: String, subscriptionId: Long = 0, notificationId: Int = 0): Notification? {
|
|
|
|
val notificationWithTopic = parseWithTopic(s, subscriptionId = subscriptionId, notificationId = notificationId)
|
|
|
|
return notificationWithTopic?.notification
|
|
|
|
}
|
|
|
|
|
|
|
|
fun parseWithTopic(s: String, subscriptionId: Long = 0, notificationId: Int = 0): NotificationWithTopic? {
|
|
|
|
val message = gson.fromJson(s, Message::class.java)
|
|
|
|
if (message.event != ApiService.EVENT_MESSAGE) {
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
val attachment = if (message.attachment?.url != null) {
|
|
|
|
Attachment(
|
|
|
|
name = message.attachment.name,
|
|
|
|
type = message.attachment.type,
|
|
|
|
size = message.attachment.size,
|
|
|
|
expires = message.attachment.expires,
|
|
|
|
url = message.attachment.url,
|
|
|
|
)
|
|
|
|
} else null
|
|
|
|
val notification = Notification(
|
|
|
|
id = message.id,
|
|
|
|
subscriptionId = subscriptionId,
|
|
|
|
timestamp = message.time,
|
|
|
|
title = message.title ?: "",
|
2022-03-13 20:58:19 +01:00
|
|
|
message = message.message,
|
|
|
|
encoding = message.encoding ?: "",
|
2022-01-16 00:40:38 +01:00
|
|
|
priority = toPriority(message.priority),
|
|
|
|
tags = joinTags(message.tags),
|
|
|
|
click = message.click ?: "",
|
|
|
|
attachment = attachment,
|
|
|
|
notificationId = notificationId,
|
|
|
|
deleted = false
|
|
|
|
)
|
|
|
|
return NotificationWithTopic(message.topic, notification)
|
|
|
|
}
|
|
|
|
|
|
|
|
data class NotificationWithTopic(val topic: String, val notification: Notification)
|
|
|
|
}
|