As you may recall, the social graph implementation in the pkg/social_graph_manager package is completely transport agnostic. It implements the SocialGraphManager interface in terms of Go and couldn't care less whether the payload is JSON or protobuf and coming over the wire through HTTP, gRPC, Thrift, or any other method. The service is responsible for translation, encoding, and decoding. These support functions are implemented in the transport.go file.
For each endpoint, there are three functions, which are the input to the HTTP transport's NewServer() function of Go kit:
- The Endpoint factory function
- The request decoder
- The response encoder
Let's start with the Endpoint factory function, which is the ...