func SerializeResponseMiddleware(registry kit.Registry, request kit.Request, response kit.Response) (kit.Response, bool) { // Try to serialize the reponse data. // Determine serializer. serializer := registry.DefaultSerializer() // Check if a custom serializer was specified. if name := request.GetContext().String("response-serializer"); name != "" { serializer = registry.Serializer(name) if serializer == nil { errResp := kit.NewErrorResponse("unknown_response_serializer", true) data, _ := serializer.MustSerializeResponse(errResp) errResp.SetData(data) return errResp, false } } // Set format in metadata. meta := response.GetMeta() if meta == nil { meta = make(map[string]interface{}) } meta["format"] = serializer.Name() response.SetMeta(meta) data, err := serializer.MustSerializeResponse(response) if err != nil { registry.Logger().Errorf("Response serialization error: %v (%+v)", err, response) } response.SetData(data) return nil, false }