Skip to content

Instantly share code, notes, and snippets.

View fiadliel's full-sized avatar

Gary Coady fiadliel

View GitHub Profile
@fiadliel
fiadliel / OutputStreamUtils.scala
Last active August 29, 2015 14:26
Wrapper to create an outToSource function
object OutputStreamUtils {
def outToSource(queueSize: Int)(f: OutputStream => Unit)(implicit S: Strategy): Process[Task, ByteVector] = {
val queue = async.boundedQueue[ByteVector](queueSize)
val qos = new QueueOutputStream(queue)
S(f(qos))
queue.dequeue
}
}
@fiadliel
fiadliel / QueueOutputStream.scala
Last active August 29, 2015 14:26
OutputStream that writes to a scalaz-stream mutable Queue
import java.io.OutputStream
import scalaz.stream._
import scodec.bits.ByteVector
class QueueOutputStream(q: async.mutable.Queue[ByteVector]) extends OutputStream {
override def write(b: Int): Unit =
q.enqueueOne(ByteVector(b & 0xff)).run
@fiadliel
fiadliel / gist:597c9a859682fb42747c
Last active August 29, 2015 14:24
Paged API requests for scalaz-stream
case class Response(results: Seq[String], nextPage: Option[Int])
def getPagedUrl(url: String, curPage: Option[Int]): Task[Response] = ???
def pagedRequest(url: String, curPage: Option[Int] = None): Process[Task, String] = {
Process.eval(getPagedUrl(url, curPage)) flatMap { response =>
Process.emitAll(response.results) ++
response.nextPage.map(p => pagedRequest(url, Some(p))).getOrElse(Process.empty)
}
}
implicit class Task2FutureWrapper[A](task: scalaz.concurrent.Task[A]) {
import scala.concurrent.{Future, Promise}
import scalaz.{-\/,\/-}
def runFuture(): Future[A] = {
val p = Promise[A]()
task.runAsync {
case -\/(t) => p.failure(t)
import org.scalatest._
class AllSuites extends Suites(
new FailureSuite,
new SuccessSuite
)
class FailureSuite extends FlatSpec {
"1" should "equal 2" in {
assert(1 === 2)
### Keybase proof
I hereby claim:
* I am fiadliel on github.
* I am fiadliel (https://keybase.io/fiadliel) on keybase.
* I have a public key whose fingerprint is BABC C4C8 109D 001F 81E4 A7DB 13BB D061 3BB9 93C4
To claim this, I am signing this object:
@fiadliel
fiadliel / Example.scala
Created August 20, 2014 10:50
Typeclass pattern using Scala implicit classes
package typeclass_example
case class Example(a: Int, b: String)