You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
970 B
45 lines
970 B
package http |
|
|
|
import ( |
|
"net/http" |
|
|
|
"github.com/pkg/errors" |
|
) |
|
|
|
var ( |
|
imageContentType = []string{"image/jpeg"} |
|
_ Render = Image{} |
|
) |
|
|
|
// Render http reponse render. |
|
type Render interface { |
|
// Render render it to http response writer. |
|
Render(http.ResponseWriter) error |
|
// WriteContentType write content-type to http response writer. |
|
WriteContentType(w http.ResponseWriter) |
|
} |
|
|
|
// Image Image. |
|
type Image struct { |
|
Body []byte |
|
} |
|
|
|
// WriteContentType write json ContentType. |
|
func (j Image) WriteContentType(w http.ResponseWriter) { |
|
writeContentType(w, imageContentType) |
|
} |
|
|
|
func writeContentType(w http.ResponseWriter, value []string) { |
|
header := w.Header() |
|
if val := header["Content-Type"]; len(val) == 0 { |
|
header["Content-Type"] = value |
|
} |
|
} |
|
|
|
// Render (JSON) writes data with json ContentType. |
|
func (j Image) Render(w http.ResponseWriter) (err error) { |
|
if _, err = w.Write(j.Body); err != nil { |
|
err = errors.WithStack(err) |
|
} |
|
return |
|
}
|
|
|