mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-27 20:15:21 +00:00
Added rss feed proxy
This commit is contained in:
parent
d7f1b86615
commit
76c2fdf9d2
@ -4,8 +4,9 @@ import android.content.Context
|
|||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import android.text.Html
|
import android.text.Html
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.prof.rssparser.Parser
|
import com.prof.rssparser.engine.XMLParser
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.Job
|
||||||
|
import kotlinx.coroutines.Runnable
|
||||||
import org.thoughtcrime.securesms.jobs.PushDecryptJob
|
import org.thoughtcrime.securesms.jobs.PushDecryptJob
|
||||||
import org.whispersystems.libsignal.util.guava.Optional
|
import org.whispersystems.libsignal.util.guava.Optional
|
||||||
import org.whispersystems.signalservice.api.messages.SignalServiceContent
|
import org.whispersystems.signalservice.api.messages.SignalServiceContent
|
||||||
@ -13,6 +14,8 @@ import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage
|
|||||||
import org.whispersystems.signalservice.api.messages.SignalServiceGroup
|
import org.whispersystems.signalservice.api.messages.SignalServiceGroup
|
||||||
import org.whispersystems.signalservice.api.push.SignalServiceAddress
|
import org.whispersystems.signalservice.api.push.SignalServiceAddress
|
||||||
import org.whispersystems.signalservice.loki.api.LokiRSSFeed
|
import org.whispersystems.signalservice.loki.api.LokiRSSFeed
|
||||||
|
import org.whispersystems.signalservice.loki.api.LokiRSSProxy
|
||||||
|
import org.whispersystems.signalservice.loki.utilities.successBackground
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.regex.Pattern
|
import java.util.regex.Pattern
|
||||||
|
|
||||||
@ -22,7 +25,6 @@ class LokiRSSFeedPoller(private val context: Context, private val feed: LokiRSSF
|
|||||||
private var hasStarted = false
|
private var hasStarted = false
|
||||||
|
|
||||||
private val task = object : Runnable {
|
private val task = object : Runnable {
|
||||||
|
|
||||||
override fun run() {
|
override fun run() {
|
||||||
poll()
|
poll()
|
||||||
handler.postDelayed(this, interval)
|
handler.postDelayed(this, interval)
|
||||||
@ -46,11 +48,8 @@ class LokiRSSFeedPoller(private val context: Context, private val feed: LokiRSSF
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun poll() {
|
private fun poll() {
|
||||||
CoroutineScope(Dispatchers.Main).launch {
|
LokiRSSProxy.fetch(feed.url).successBackground { xml ->
|
||||||
try {
|
val items = XMLParser(xml).call()
|
||||||
val url = feed.url
|
|
||||||
val parser = Parser()
|
|
||||||
val items = parser.getArticles(url)
|
|
||||||
items.reversed().forEach { item ->
|
items.reversed().forEach { item ->
|
||||||
val title = item.title ?: return@forEach
|
val title = item.title ?: return@forEach
|
||||||
val description = item.description ?: return@forEach
|
val description = item.description ?: return@forEach
|
||||||
@ -69,9 +68,8 @@ class LokiRSSFeedPoller(private val context: Context, private val feed: LokiRSSF
|
|||||||
val x3 = SignalServiceContent(x2, "Loki", SignalServiceAddress.DEFAULT_DEVICE_ID, timestamp, false)
|
val x3 = SignalServiceContent(x2, "Loki", SignalServiceAddress.DEFAULT_DEVICE_ID, timestamp, false)
|
||||||
PushDecryptJob(context).handleTextMessage(x3, x2, Optional.absent(), Optional.absent())
|
PushDecryptJob(context).handleTextMessage(x3, x2, Optional.absent(), Optional.absent())
|
||||||
}
|
}
|
||||||
} catch (exception: Exception) {
|
}.fail { exception ->
|
||||||
Log.d("Loki", "Couldn't update RSS feed with ID: $feed.id.")
|
Log.d("Loki", "Couldn't update RSS feed with ID: $feed.id. $exception")
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user