10 "github.com/go-kit/kit/endpoint"
13 func makeUppercaseEndpoint(svc StringService) endpoint.Endpoint {
14 return func(ctx context.Context, request interface{}) (interface{}, error) {
15 req := request.(uppercaseRequest)
16 v, err := svc.Uppercase(req.S)
18 return uppercaseResponse{v, err.Error()}, nil
20 return uppercaseResponse{v, ""}, nil
24 func makeCountEndpoint(svc StringService) endpoint.Endpoint {
25 return func(ctx context.Context, request interface{}) (interface{}, error) {
26 req := request.(countRequest)
28 return countResponse{v}, nil
32 func decodeUppercaseRequest(_ context.Context, r *http.Request) (interface{}, error) {
33 var request uppercaseRequest
34 if err := json.NewDecoder(r.Body).Decode(&request); err != nil {
40 func decodeCountRequest(_ context.Context, r *http.Request) (interface{}, error) {
41 var request countRequest
42 if err := json.NewDecoder(r.Body).Decode(&request); err != nil {
48 func decodeUppercaseResponse(_ context.Context, r *http.Response) (interface{}, error) {
49 var response uppercaseResponse
50 if err := json.NewDecoder(r.Body).Decode(&response); err != nil {
56 func encodeResponse(_ context.Context, w http.ResponseWriter, response interface{}) error {
57 return json.NewEncoder(w).Encode(response)
60 func encodeRequest(_ context.Context, r *http.Request, request interface{}) error {
62 if err := json.NewEncoder(&buf).Encode(request); err != nil {
65 r.Body = ioutil.NopCloser(&buf)
69 type uppercaseRequest struct {
73 type uppercaseResponse struct {
75 Err string `json:"err,omitempty"`
78 type countRequest struct {
82 type countResponse struct {