Packages

o

sanskrit_coders

RichHttpClient

object RichHttpClient

A client robust to redirects and such. Copied and adapted from https://github.com/akka/akka-http/issues/195

Usage: call httpClientWithRedirect(). implicit val actorMaterializer = ActorMaterializer() implicit val executionContext = system.dispatcher private val simpleClient: HttpRequest => Future[HttpResponse] = Http(context.system).singleRequest(_: HttpRequest) private val redirectingClient: HttpRequest => Future[HttpResponse] = RichHttpClient.httpClientWithRedirect(simpleClient) RichHttpClient.httpResponseToString(redirectingClient(HttpRequest(uri = uri))).map(responseString => { log.debug(responseString) val archiveItem = jsonHelper.fromString[ItemInfo](responseString) archiveItem.toPodcast(filePattern = podcastRequest.filePattern, useArchiveOrder = podcastRequest.useArchiveOrder, podcast = podcastRequest.podcastTemplate) })

To dump to file: val httpResponseFuture = redirectingClient(HttpRequest(uri = dict.dictTarUrl))

val destinationPath = Paths.get(dict.destinationFolder, dict.dictTarUrl.split("/").last) assert(new java.io.File(dict.destinationFolder).mkdirs()) val fileSink = FileIO.toPath(destinationPath) val ioResultFuture = httpResponseFuture.flatMap(response => { response.entity.dataBytes.runWith(fileSink) })

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. RichHttpClient
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. type HttpClient = (HttpRequest) ⇒ Future[HttpResponse]

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. def httpClientWithRedirect(client: HttpClient)(implicit ec: ExecutionContext, materializer: Materializer): HttpClient

    Turns a HttpClient into a Http client which handles redirects.

    Turns a HttpClient into a Http client which handles redirects.

    returns

    a recursive function of the type HttpClient

  12. def httpResponseToString(responseFuture: Future[HttpResponse])(implicit ec: ExecutionContext, materializer: Materializer): Future[String]

    A convenience function to convert a Future[HttpResponse] to a Future[String].

    A convenience function to convert a Future[HttpResponse] to a Future[String]. There are potentially better ways of doing this using the akka stream API.

  13. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  14. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  15. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  16. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  17. def redirectOrResult(client: HttpClient)(response: HttpResponse)(implicit materializer: Materializer): Future[HttpResponse]

    Given a response, follow a redirect - or just yield the response.

    Given a response, follow a redirect - or just yield the response.

    client

    A function of the type HttpClient

  18. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  19. def toString(): String
    Definition Classes
    AnyRef → Any
  20. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  21. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  22. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped