Very Nice stuff - shame he didn't merge it. But I see that you changes the request in the RoundTrip function, which is claimed as forbidden in the docs. Again, I don't understand why the docs forbid it...
On Wednesday, March 7, 2018 at 1:52:55 AM UTC+2, Sangjin Lee wrote: > > I offered a PR on alice (which is a middleware library for the handlers) > that does that. It's essentially an application of the same pattern. We're > getting a lot of mileage for this. > > https://github.com/justinas/alice/pull/40 > > On Tuesday, March 6, 2018 at 6:41:53 AM UTC-8, Eyal Posener wrote: >> >> Good stuff, >> So I see that this library wraps the http.Client and doesn't use the >> roundtripper. >> Pretty elegant! >> >> I still have two questions about the standard library: >> >> - Didn't understand yet why it is not allowed to add headers in the >> roundtripper. >> - Is this a bit strange that the standard library provides a >> beautiful way to have server middleware, but no way to have client >> middlewares? >> >> Cheers, >> Eyal >> >> On Tuesday, March 6, 2018 at 2:57:57 AM UTC+2, Bojan Delić wrote: >>> >>> As far as I am aware, there is very little information about best >>> practices regarding client side middlewares. >>> >>> I though that having such support is neat idea and I have implemented >>> something (that I use for some time now, though still in beta) that you >>> might find useful for your use case. I have written small library that >>> describes client middleware protocol <https://github.com/delicb/cliware>, >>> some useful middlewares <https://github.com/delicb/cliware-middlewares> >>> and HTTP client <https://github.com/delicb/gwc> that's using these >>> libraries. >>> >>> This might solve your problem directly (writing new middleware is >>> trivial), but it might introduce dependency that you don't want, so I hope >>> this will provide inspiration on how you would do something similar >>> yourself. >>> >>> On Monday, March 5, 2018 at 3:03:14 PM UTC+1, Eyal Posener wrote: >>>> >>>> Hi >>>> >>>> I want to implement a client middleware - for example: sign the request >>>> body and add the signature as an HTTP header. >>>> I thought that the best way to do it is to implement a RoundTripper >>>> interface <https://golang.org/pkg/net/http/#RoundTripper> which up on >>>> request, calculate the signature, adds the header, and invoke a "next" >>>> ToundTripper. >>>> >>>> This could be a very generic implementation, which i can inject to any >>>> client that uses the standard library http.Client. >>>> >>>> However, I found the following in the doc: >>>> >>>> // RoundTrip should not modify the request, except for >>>> // consuming and closing the Request's Body. RoundTrip may >>>> // read fields of the request in a separate goroutine. Callers >>>> // should not mutate the request until the Response's Body has >>>> // been closed. >>>> >>>> >>>> Is there a standard way to do it? >>>> >>>> Thanks, >>>> Eyal >>>> >>> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.