podman

Форк
0
48 строк · 1.2 Кб
1
// Copyright 2018 Gin Core Team. All rights reserved.
2
// Use of this source code is governed by a MIT style
3
// license that can be found in the LICENSE file.
4

5
package render
6

7
import (
8
	"io"
9
	"net/http"
10
	"strconv"
11
)
12

13
// Reader contains the IO reader and its length, and custom ContentType and other headers.
14
type Reader struct {
15
	ContentType   string
16
	ContentLength int64
17
	Reader        io.Reader
18
	Headers       map[string]string
19
}
20

21
// Render (Reader) writes data with custom ContentType and headers.
22
func (r Reader) Render(w http.ResponseWriter) (err error) {
23
	r.WriteContentType(w)
24
	if r.ContentLength >= 0 {
25
		if r.Headers == nil {
26
			r.Headers = map[string]string{}
27
		}
28
		r.Headers["Content-Length"] = strconv.FormatInt(r.ContentLength, 10)
29
	}
30
	r.writeHeaders(w, r.Headers)
31
	_, err = io.Copy(w, r.Reader)
32
	return
33
}
34

35
// WriteContentType (Reader) writes custom ContentType.
36
func (r Reader) WriteContentType(w http.ResponseWriter) {
37
	writeContentType(w, []string{r.ContentType})
38
}
39

40
// writeHeaders writes custom Header.
41
func (r Reader) writeHeaders(w http.ResponseWriter, headers map[string]string) {
42
	header := w.Header()
43
	for k, v := range headers {
44
		if header.Get(k) == "" {
45
			header.Set(k, v)
46
		}
47
	}
48
}
49

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.