Closed awalterschulze closed 7 years ago
Then we can write
getEndpoint := fmt.Sprintf("%s/oldusers/%s", config.endpoint, config.username)
postEndpoint := fmt.Sprintf("%s/newusers/%s", config.endpoint, config.username)
result, err := deriveCompose(
http.Get(getEndpoint),
func(req *http.Request) ([]byte, error) { return ioutil.ReadAll(req.Body) },
user.NewFromJson,
user.NewUserFromUser,
json.Marshal,
func(buf []byte) (*http.Response, error) {
return http.Post(postEndpoint, "application/json", bytes.NewBuffer(buf))
},
)
Example found on slide 55 of https://speakerdeck.com/rebeccaskinner/monadic-error-handling-in-go
crazy shit. That is awesome.
Glad you like it :)
done and also included an example https://github.com/awalterschulze/goderive/tree/master/example/plugin/compose
Also rename deriveBind to deriveCompose