Skip to content

Commit

Permalink
Merge pull request #3 from windymelt/fixbug
Browse files Browse the repository at this point in the history
posting IO should not be in yield
  • Loading branch information
windymelt committed Sep 25, 2023
2 parents 2294f53 + 48fc214 commit aad309f
Showing 1 changed file with 20 additions and 19 deletions.
39 changes: 20 additions & 19 deletions src/Main.scala
Original file line number Diff line number Diff line change
Expand Up @@ -40,31 +40,32 @@ extension (e: SyndEntry)
}

object Rss2Discord extends IOApp.Simple {
val feedUrl = feedUrlEnv.get
def handler(in: InputStream, out: OutputStream, ctx: Context): Unit = main(
Array()
)
private def entriesToPost(feedUrl: String, timeAfter: DateTime) = IO.delay {
import scala.collection.JavaConverters._
val feed = new SyndFeedInput().build(new XmlReader(new URL(feedUrl)))
feed
.getEntries()
.asScala
.filter {
case e if (e.publishedDateTime orElse e.updatedDateTime).isDefined =>
val dt = (e.publishedDateTime orElse e.updatedDateTime).get
dt.isAfter(timeAfter)
case _ => false
}
}
def run: IO[Unit] = {
import cats.implicits._
import scala.collection.JavaConverters._

val feedUrl = feedUrlEnv.get

def entriesToPost(timeAfter: DateTime) = IO.delay {
val feed = new SyndFeedInput().build(new XmlReader(new URL(feedUrl)))
feed
.getEntries()
.asScala
.filter {
case e if (e.publishedDateTime orElse e.updatedDateTime).isDefined =>
val dt = (e.publishedDateTime orElse e.updatedDateTime).get
dt.isAfter(timeAfter)
case _ => false
}
}
for {
dt <- IO(DateTime.now())
entries <- entriesToPost(timeAfter = dt.minusMinutes(31))
} yield entries.toSeq.traverse(e => post(formatEntry(e))).void
_ <- IO.println(s"finding entries ${dt.minusMinutes(31)} .. $dt")
entries <- entriesToPost(feedUrl, timeAfter = dt.minusMinutes(31))
_ <- IO.println(s"entriesToPost: ${entries.map(_.getTitle())}")
_ <- entries.toSeq.traverse(e => post(formatEntry(e)))
} yield ()
}

def formatEntry(entry: SyndEntry): String = {
Expand All @@ -86,6 +87,6 @@ Author: ${entry.getAuthor()}
val parsedResult =
clientResource.flatMap(_.run(req)).use(res)

parsedResult.debug().void
parsedResult.debug("DEBUG").flatTap(_ => IO.println("posted")).void
}
}

0 comments on commit aad309f

Please sign in to comment.