podman

Форк
0
77 строк · 1.9 Кб
1
// Copyright 2015 go-swagger maintainers
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
//    http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14

15
package runtime
16

17
import (
18
	"bytes"
19
	"encoding/csv"
20
	"errors"
21
	"io"
22
)
23

24
// CSVConsumer creates a new CSV consumer
25
func CSVConsumer() Consumer {
26
	return ConsumerFunc(func(reader io.Reader, data interface{}) error {
27
		if reader == nil {
28
			return errors.New("CSVConsumer requires a reader")
29
		}
30

31
		csvReader := csv.NewReader(reader)
32
		writer, ok := data.(io.Writer)
33
		if !ok {
34
			return errors.New("data type must be io.Writer")
35
		}
36
		csvWriter := csv.NewWriter(writer)
37
		records, err := csvReader.ReadAll()
38
		if err != nil {
39
			return err
40
		}
41
		for _, r := range records {
42
			if err := csvWriter.Write(r); err != nil {
43
				return err
44
			}
45
		}
46
		csvWriter.Flush()
47
		return nil
48
	})
49
}
50

51
// CSVProducer creates a new CSV producer
52
func CSVProducer() Producer {
53
	return ProducerFunc(func(writer io.Writer, data interface{}) error {
54
		if writer == nil {
55
			return errors.New("CSVProducer requires a writer")
56
		}
57

58
		dataBytes, ok := data.([]byte)
59
		if !ok {
60
			return errors.New("data type must be byte array")
61
		}
62

63
		csvReader := csv.NewReader(bytes.NewBuffer(dataBytes))
64
		records, err := csvReader.ReadAll()
65
		if err != nil {
66
			return err
67
		}
68
		csvWriter := csv.NewWriter(writer)
69
		for _, r := range records {
70
			if err := csvWriter.Write(r); err != nil {
71
				return err
72
			}
73
		}
74
		csvWriter.Flush()
75
		return nil
76
	})
77
}
78

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

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

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

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