Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Jan 24 15:50
    scala-steward closed #1412
  • Jan 24 15:50
    scala-steward commented #1412
  • Jan 24 15:50
    scala-steward opened #1437
  • Jan 21 01:33
    scala-steward closed #1414
  • Jan 21 01:33
    scala-steward commented #1414
  • Jan 21 01:33
    scala-steward opened #1436
  • Jan 13 06:57
    scala-steward closed #1418
  • Jan 13 06:57
    scala-steward commented #1418
  • Jan 13 06:57
    scala-steward opened #1435
  • Jan 11 23:46
    scala-steward closed #1419
  • Jan 11 23:46
    scala-steward commented #1419
  • Jan 11 23:46
    scala-steward opened #1434
  • Jan 11 23:46
    scala-steward closed #1422
  • Jan 11 23:46
    scala-steward commented #1422
  • Jan 11 23:46
    scala-steward opened #1433
  • Jan 11 08:24
    mfirry commented #1417
  • Jan 04 18:50
    jianshu93 opened #1432
  • Dec 29 2021 12:25
    scala-steward closed #1430
  • Dec 29 2021 12:25
    scala-steward commented #1430
  • Dec 29 2021 12:25
    scala-steward opened #1431
pacman899
@pacman899
Im almost sure I can just delete the FuturePool and get the same logic for "free" from the F[_] change
Ryan Plessner
@rpless
@pacman899 yep! A context shift is what you want there. you could also shift on to an ExecutionContext if you are using those currently
Dermot Haughey
@hderms
@hamdiallam agreed. based on having been following the 2.13 stuff in finagle, it was quite easy to introduce performance regressions
Bagus Jatikusuma
@BagusJatikusuma
hello everyone. i have a question regarding iteratee example in finch github repo. when i tried to compile it, compiler complained that it couldnt find implicit value for parameter io.finch.LiftReader when using jsonBodyStream. should i provide LiftReader as implicit val manually? or am i missing some imports?? anyway sorry for any grammar mistakes. english isnt my native language. i hope you'll understand my question.
Sergey Kolbasov
@sergeykolbasov

Hi @BagusJatikusuma

That's interesting. Try to add import io.finch.iteratee._, it contains a missing implicit LiftReader

Bagus Jatikusuma
@BagusJatikusuma
thanks for answering @sergeykolbasov . i've done that before (i didn't change imports of the example file) but its still give me same error message. i'm using scala 2.12.10 and finchx-core, finch(iteratee and circe) version 0.31.0.
Sergey Kolbasov
@sergeykolbasov
What effect type are you using?
Bagus Jatikusuma
@BagusJatikusuma
im using cats-effect and ZIO. but both didnot work.
Bagus Jatikusuma
@BagusJatikusuma
as additional information, i didnot add any scalac configuration to build sbt. im still new to scala with its ecosystem.
Bagus Jatikusuma
@BagusJatikusuma
is it different when using finch-iteratee and finchx-iteratee?? in finch-iteratee implicit def enumeratorLiftReader() doesn't exist, but in finchx-iteratee it does.
Bagus Jatikusuma
@BagusJatikusuma
ah finally its solved. it was my mistake that i added some finch-module dependencies, not finchx-module(only finchx-core which i added xD). it was stupid mistake.
thanks @sergeykolbasov for your answer before.
Sergey Kolbasov
@sergeykolbasov
I'd say it's confusing for new comers and I hope we'll soon drop the finchx name and replace finch artefact with this one
Sergey Kolbasov
@sergeykolbasov

Hey everyone

0.32.1 is available for download, shipped for Scala 2.13 with the latest Finagle 20.3.0 and cats 2

yay
Bagus Jatikusuma
@BagusJatikusuma
congrats, great job for finagle/finch team and community
Georgi Krastev
@joroKr21
:tada:
Dino Fancellu
@fancellu

Are there any examples out there of Finch returning images, i.e. the best way? I see an example of Serving static content, but readAll doesn't exist. Any fully fleshed examples?

Thanks

For example, I tried this, and I get a partial image.
  val catpath = Paths.get(ClassLoader.getSystemResource("./cats.jpg").toURI)
  val reader = Reader.fromFile(catpath.toFile)

  val cat: Future[Buf] =Reader.readAllItems(reader).map(_.head)

  val image: Endpoint[IO, Buf] = get(imageadmin :: path[Int]) { id: Int =>
    cat.map(Ok)
  }
Dino Fancellu
@fancellu
Ah, I reckon my .head was chopping it off. Anyway, this works, I get the full cat picture back. But no doubt there are better ways
  val catpath = Paths.get(ClassLoader.getSystemResource("./cats.jpg").toURI)
  val bytes: Array[Byte] =Files.readAllBytes(catpath)
  val catbuff: Buf =ByteArray(bytes:_*)

  val image: Endpoint[IO, Buf] = get(imageadmin :: path[Int]) { id: Int =>
    Ok(catbuff)
  }.handle(exceptionToBadRequest)
Georgi Krastev
@joroKr21
I wonder if it's possible to combine finch and fs2-io for that. But I have no time to try it.
Dino Fancellu
@fancellu

I'm trying to return a 404 with a phrase that is not simple "Not Found"

This doesn't change the phrase

Output.failure(new Exception("Image not found"), Status.NotFound)

or

NotFound(new Exception("Image not found")

I get a 404 just fine. But I want the phrase to be as in the exception. Raw header is

HTTP/1.1 404 Not Found\r\nDate: Mon, 30 Mar 2020 11:51:40 GMT\r\nServer: Finch\r\nContent-Length: 0\r\n\r\n

Frederick Cai
@zhenwenc

@fancellu Me again 😄 You need to implement your own implicit Encoder[Exception], and ensure it is in scope when calling toService / toServiceAs on your endpoint(s)

See https://finagle.github.io/finch/cookbook.html#converting-errors-into-json

Dino Fancellu
@fancellu

I do

  implicit val encodeException: Encoder[Exception] = Encoder.instance(e =>
    Json.obj("exception" -> Json.fromString(e.getMessage)))

What would I need to do to get it to put the getMessage into the HTTP reason?

Currently it says

HTTP/1.1 404 Not Found

htch
@htch

Why does returning twitter's Future from endpoint with Endpoint[IO,?] type works? Using finchx 0.32.1

For example:

import cats.effect.IO
import com.eslgaming.services.platform.lokalisewebhook.domain.{Event, WebhookError}
import com.eslgaming.services.platform.lokalisewebhook.handler.WebhookEventHandler
import com.twitter.util.Future
import com.twitter.util.logging.Logging
import io.finch.{Endpoint, Output, Ok, NoContent}
//import io.finch.catsEffect._
import io.finch.circe._
import shapeless.HNil
import io.circe.Json
//import io.catbird.util.twitterFutureInstance

object LokaliseWebhookEndpoint extends Logging {

  def apply(ipRangeEndpoint: Endpoint[IO,HNil], webhookEventHandler: WebhookEventHandler): Endpoint[IO,Unit] =
    Endpoint[IO].post(Endpoint[IO].path("webhook") :: ipRangeEndpoint :: Endpoint[IO].jsonBody[Json]) { body: Json =>
      if (body == Json.arr(Json.fromString("ping"))) {
        Future.value(Ok(()))
      } else {
        val event = body.as[Event].getOrElse(throw new RuntimeException())
        webhookEventHandler.handleEvent(event) map {
          case Right(_) => NoContent[Unit]
          case Left(err) => {
            Output.failure(new RuntimeException(err.message), err.status)
          }
        }
      }
    }

}

webhookEventHandler.handleEvent returns a twitter Future

Sergey Kolbasov
@sergeykolbasov
@htch there is an implicit coversion of Twitter Future -> Anything with Async
it lives inside of ToAsync and is available only for method endpoints, such as get("foo") { ... }
Kenneth Monteiro
@ManiacViper
Hello
anyone can point me in the right direction for a finch refined error message
how do i get one in the contentResponse
for paramOption[NonEmptyString]("marketingsource") it returns a BadRequest for a empty string but no error message
these are my imports import io.finch.refined._ import io.circe.refined._ // needed import eu.timepit.refined.auto._ import eu.timepit.refined.types.string.NonEmptyString
Kevin Pei
@kpei

Hey guys, is it possible to flatten up nested Endpoints?

Let's say I have something like

(param[Int]("foo")).map {
   foo: Int => new fooEndpoint(foo)
}

The return type is an Endpoint[Endpoint[SomeResponseClass]]

Sergey Kolbasov
@sergeykolbasov

Hi @ManiacViper

You should define custom Encode[Exception] implicit instance and provide it at the call of .toService. Default encoding of all the exceptons is a blank page

@kpei No, it's not possible as endpoint is not monadic, but applicative. What's your use case?
Dino Fancellu
@fancellu

Does anyone know if Finch supports web sockets? Or some Finagle based code?

I see https://github.com/finagle/finagle-websocket but that project is inactive. Thanks

Nicolas Rinaudo
@nrinaudo
This might be a silly question, but I see:
has this not been pushed to maven central, or is not hosted there anymore?
Dino Fancellu
@fancellu
Any examples of Finch handling file upload? Or Finagle? Thanks
Sergey Kolbasov
@sergeykolbasov
@nrinaudo Are you sure you're checking for finchx artefact? https://index.scala-lang.org/finagle/finch/finchx-core
Nicolas Rinaudo
@nrinaudo
Ah, I'm pretty sure I'm not, I didn't realise the name of the project had changed!
Sergey Kolbasov
@sergeykolbasov
@fancellu Finch doesn't support websockets
@nrinaudo it's a temporary thing, as we've two artifacts atm: with Future and F[_] (or finchx)
Nicolas Rinaudo
@nrinaudo
right. and the one with Future is not being updated anymore?
Sergey Kolbasov
@sergeykolbasov
Next release is going to end the deprecation cycle for Future one and finchx will be gone as well, so there will be only finch
Yeah
Nicolas Rinaudo
@nrinaudo
so if I want support for 2.13, later versions of circe, ... I need to move to finchx temporarily
correct?
Sergey Kolbasov
@sergeykolbasov
yes
Nicolas Rinaudo
@nrinaudo
Understood, thank you.