package net.lacolaco.smileessence.twitter import net.lacolaco.smileessence.World import net.lacolaco.smileessence.entity.Tweet import net.lacolaco.smileessence.util.bg import twitter4j.Paging fun makePaging(sinceId: Long? = null, maxId: Long? = null): twitter4j.Paging { val paging = Paging() paging.count = 200 if (sinceId != null) paging.sinceId = sinceId if (maxId != null) paging.maxId = maxId return paging } fun World.getHomeTimelineAsync(sinceId: Long? = null, maxId: Long? = null) = bg { Tweet.fromTwitter(TwitterTaskException.wrap { twitter.timelines().getHomeTimeline(makePaging(sinceId, maxId)) }, id) } fun World.getMentionsTimelineAsync(sinceId: Long? = null, maxId: Long? = null) = bg { Tweet.fromTwitter(TwitterTaskException.wrap { twitter.timelines().getMentionsTimeline(makePaging(sinceId, maxId)) }, id) } fun World.getUserTimelineAsync(id: Long, sinceId: Long? = null, maxId: Long? = null) = bg { Tweet.fromTwitter(TwitterTaskException.wrap { twitter.timelines().getUserTimeline(id, makePaging(sinceId, maxId)) }, id) } // XXX: Use numeric ID fun World.getListTimelineAsync(listName: String, sinceId: Long? = null, maxId: Long? = null) = bg { val strings = listName.split("/".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() Tweet.fromTwitter(TwitterTaskException.wrap { twitter.list().getUserListStatuses(strings[0], strings[1], makePaging(sinceId, maxId)) }, id) }