func writeResponse(w http.ResponseWriter, statusCode int, action string, data interface{}) { responseBuffer := &bytes.Buffer{} encoder := xml.NewEncoder(responseBuffer) resultWrapper := xml.StartElement{Name: xml.Name{Local: action + "Result"}} err := encoder.EncodeToken(resultWrapper) if err != nil { panic(err) } err = xmlutil.BuildXML(data, encoder) if err != nil { panic(err) } err = encoder.EncodeToken(resultWrapper.End()) if err != nil { panic(err) } err = encoder.Flush() if err != nil { panic(err) } w.WriteHeader(statusCode) _, err = w.Write(responseBuffer.Bytes()) if err != nil { panic(err) } }
// Build builds a request payload for the REST XML protocol. func Build(r *request.Request) { rest.Build(r) if t := rest.PayloadType(r.Params); t == "structure" || t == "" { var buf bytes.Buffer err := xmlutil.BuildXML(r.Params, xml.NewEncoder(&buf)) if err != nil { r.Error = awserr.New("SerializationError", "failed to encode rest XML request", err) return } r.SetBufferBody(buf.Bytes()) } }