Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 18:08
    armanbilge labeled #6806
  • 17:32

    github-actions[bot] on gh-pages

    deploy: 9ffdefabdc2c0721ad6cd1a… (compare)

  • 17:27

    danicheg on series

    (compare)

  • 17:27

    danicheg on 0.23

    Update cats-effect, cats-effect… Merge pull request #6838 from h… (compare)

  • 17:27
    danicheg closed #6838
  • 16:33
    mergify[bot] labeled #6838
  • 16:33
    mergify[bot] labeled #6838
  • 16:33

    http4s-steward[bot] on series

    Update cats-effect, cats-effect… (compare)

  • 16:33
    http4s-steward[bot] opened #6838
  • 15:09
    monzonj commented #6806
  • 15:05

    rossabaker on 0.23

    [chore] updated dependencies Merge pull request #296 from gc… (compare)

  • 15:05
    rossabaker closed #296
  • 11:48
    gcnyin opened #296
  • 08:49
    cesarcolle starred http4s/http4s
  • 08:30

    github-actions[bot] on gh-pages

    deploy: 7dd8cf7fd2e68ca7ddfae09… (compare)

  • 08:26
    themorya starred http4s/http4s
  • 08:25

    armanbilge on flake-lock

    (compare)

  • 08:25
    armanbilge closed #6837
  • 08:25

    armanbilge on 0.23

    flake.lock: Update Flake lock … Merge pull request #6837 from h… (compare)

  • 07:47
    mergify[bot] labeled #6837
Ross A. Baker
@rossabaker
It's a subtle change, so I moved that to 0.21. I think it would have been binary compatible.
Jakub Kozłowski
@kubukoz
Why was Uri.uri deprecated? The interpolator is nice, but it's quite hard to find the right import that doesn't end with an underscore
having two possible ways to write an URI from a string literal was actually cool
Gavin Bisesi
@Daenyth
Hey, what's the shape of the landscape in terms of AWS request signing?
Christopher Davenport
@ChristopherDavenport
I thought someone had implemented that somewhere.
Gavin Bisesi
@Daenyth
Assume I want to add a project-internal client for an api that doesn't have a pre-existing api client, but uses that signing method - is there something I can depend on that drops the middleware in?
I implemented it myself once before but was sad about it
and then when I brought it up here I heard there were some approaches
There's aws4s but I'm not convinced that I want to base my api client on their model, and I don't know to what extent the signing can be abstracted out
because I also need to go through the LWA (SSO) system, which I think the public-facing services don't force
Christopher Davenport
@ChristopherDavenport
Haven’t played with it, sorry hopefully someone who has can be more informative.
Abhishek Srivastava
@abhishes_twitter
I wrote this code
BlazeClientBuilder[IO](global).resource.use { client =>
for {
    response <- foo( client)
 } yield ()
 }

def foo(client: Client) : IO[String] = ...
this gives me error trait Client takes type parameters
How should I define the signature of method foo?
oh wait .... got it def foo(client: Client[IO]) : IO[String] = ...
Henri Cook
@henricook
Hi all, i'm hoping to receive a POST of a JSON object, i'm struggling to find an example of a post endpoint that parses a json object modelled by a case class though, can anyone point me in the right direction?
Fabio Labella
@SystemFw
check the "putting it all together" section towards the bottom of the page
Henri Cook
@henricook
ahhh i hadn't read that far, i'd stopped/got confused around Decoding JSON to a case class
thanks for that
corentin
@corenti13711539_twitter
Anyone using New Relic with v. 0.20? Any hints on how to implement request processing time and error monitoring?
Basavaraj Kalloli
@scalolli

Hi, is there way in http4s to get the app route or authority for incoming requests? Basically we have an app which needs to generate previous/next links and we would like to know the route that it is running on.

println(request.uri.authority)

always prints None. So we are having to pass the route as a config parameter and then recreate the link like:

(appApi.baseUri / "blah").copy(query = request.uri.query)

Any other suggestions? It seems a bit odd to have to pass your own route.

Dmitry Polienko
@nigredo-tori

@scalolli , Request.uriprobably represents Request-URI part of the query, which is usually just the absolute path. So it makes sense the authority is None.
However, HTTP 1.1-compliant clients should provide this information in another way. RFC 2616:

The most common form of Request-URI is that used to identify a resource on an origin server or gateway. In this case the absolute path of the URI MUST be transmitted (see section 3.2.1, abs_path) as the Request-URI, and the network location of the URI (authority) MUST be transmitted in a Host header field.

Also, depending on your use case, you might want to take a look at the VirtualHost middleware.

Boris V.Kuznetsov
@tampler

Hi I'm working with 0.21.0-SNAPSHOT and permanently getting a JSON parse error for a simple JSON parsing example. Here's my code:

    it("work with json") {

    val body = json"""
      {
        "id"        : 33        ,
        "url"       :"/testUrl" ,
        "title"     :"One"      ,
        "completed" : false     ,
        "order"     : "None"
      }"""
    val req = request[TodoTask](Method.POST, "/").withEntity(body)
...
}

And this gives me an error:

Fiber failed.
A checked error was not handled.
org.http4s.MalformedMessageBodyFailure: Malformed message body: Invalid JSON
        at org.http4s.circe.CirceInstances$.$anonfun$defaultCirceParseError$1(CirceInstances.scala:179)
        at cats.syntax.EitherOps$.leftMap$extension(either.scala:144)
        at org.http4s.circe.CirceInstances.$anonfun$jsonDecoderByteBufferImpl$1(CirceInstances.scala:37)
        at scala.util.Either.flatMap(Either.scala:341)

Any ideas ?

Circe 0.11.1, ZIO 1.0-RC5
Seth Lasky
@TheMover

For sending many requests with the blaze client is it better to do something like

BlazeClientBuilder[IO](global).resource.use{ client =>    
    val a = client.expect(...)
    val b = client.expect(...)
    val c = client.expect(...)
    ...
  }

or

val client = BlazeClientBuilder[IO](global).resource
val a = client.use(_.expect(...))
val b = client.use(_.expect(...))
val c = client.use(_.expect(...))
  ...
Michael Pilquist
@mpilquist
@TheMover Former, as the latter will create connection pools multiple times and then free them multiple times
Seth Lasky
@TheMover
That's what I thought, just wanted to make sure - thank you!
Rob Norris
@tpolecat
I am trying to add some request headers. Does POST(json, uri).map(_.withHeaders(myHeaders)) look right?
Christopher Davenport
@ChristopherDavenport
That should do it.
Rob Norris
@tpolecat
I'm getting a 400 back from the remote server after doing that and I can't figure out why.
Ok
Christopher Davenport
@ChristopherDavenport
You may want to include the original headers.
Rob Norris
@tpolecat
How do I do that?
Christopher Davenport
@ChristopherDavenport
POST(json, uri).map(req => req.withHeaders(req.headers |+| myHeaders)) if you are on the newer stuff
_.putHeaders does what you want though, assoming you are ok with the eta expansion.
Rob Norris
@tpolecat
That fixed it, thanks.
Rob Norris
@tpolecat
Man, this ConcurrentEffect thing is really bringing me down.
Michael Pilquist
@mpilquist
lol
Rob Norris
@tpolecat
Do you think we could replace this with imperative code that just uses reactive streams instead of hopping into fs2?
Well I guess the response needs a stream doesn't it.
bah
I'll see if the ember client works.
Forked!
Rob Norris
@tpolecat
Aaaaaaaaand it works!
Gavin Bisesi
@Daenyth
:parrots:
Billzabob
@Billzabob
I’m really sad that emote doesn’t work in Gitter :(
Gavin Bisesi
@Daenyth
indeed
Christopher Davenport
@ChristopherDavenport
Woot! Ember to the rescue