From c574f6c50c8594f93d28b03a1bbd87b4a3899093 Mon Sep 17 00:00:00 2001 From: Manu Mtz-Almeida Date: Tue, 19 May 2015 00:02:44 +0200 Subject: [PATCH] Avoid using fmt.Fprint() --- sse-encoder.go | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/sse-encoder.go b/sse-encoder.go index 7f489df..5a5bfa7 100644 --- a/sse-encoder.go +++ b/sse-encoder.go @@ -22,16 +22,6 @@ type Event struct { Data interface{} } -func (r Event) Write(w http.ResponseWriter) error { - header := w.Header() - header.Set("Content-Type", ContentType) - - if _, exist := header["Cache-Control"]; !exist { - header.Set("Cache-Control", "no-cache") - } - return Encode(w, r) -} - func Encode(w io.Writer, event Event) error { writeId(w, event.Id) writeEvent(w, event.Event) @@ -72,11 +62,22 @@ func writeData(w io.Writer, data interface{}) error { w.Write([]byte("\n")) default: text := fmt.Sprint(data) - fmt.Fprint(w, escape(text), "\n\n") + w.Write([]byte(escape(text))) + w.Write([]byte("\n\n")) } return nil } +func (r Event) Write(w http.ResponseWriter) error { + header := w.Header() + header.Set("Content-Type", ContentType) + + if _, exist := header["Cache-Control"]; !exist { + header.Set("Cache-Control", "no-cache") + } + return Encode(w, r) +} + func typeOfData(data interface{}) reflect.Kind { value := reflect.ValueOf(data) valueType := value.Kind() @@ -88,7 +89,7 @@ func typeOfData(data interface{}) reflect.Kind { func escape(str string) string { // any-char = %x0000-0009 / %x000B-000C / %x000E-10FFFF - // ; a Unicode character other than U+000A LINE FEED (LF) or U+000D CARRIAGE RETURN (CR) + // ; a Unicode character other than U+000A LINE FEED (LF) or U+000D CARRIAGE RETURN (CR) str = strings.Replace(str, "\n", "\\n", -1) str = strings.Replace(str, "\r", "\\r", -1) return str