Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
projectdiscovery
GitHub Repository: projectdiscovery/nuclei
Path: blob/dev/pkg/output/multi_writer.go
2070 views
1
package output
2
3
import (
4
"github.com/logrusorgru/aurora"
5
)
6
7
type MultiWriter struct {
8
writers []Writer
9
}
10
11
var _ Writer = &MultiWriter{}
12
13
// NewMultiWriter creates a new MultiWriter instance
14
func NewMultiWriter(writers ...Writer) *MultiWriter {
15
return &MultiWriter{writers: writers}
16
}
17
18
func (mw *MultiWriter) Close() {
19
for _, writer := range mw.writers {
20
writer.Close()
21
}
22
}
23
24
func (mw *MultiWriter) Colorizer() aurora.Aurora {
25
// Return the colorizer of the first writer
26
if len(mw.writers) > 0 {
27
return mw.writers[0].Colorizer()
28
}
29
// Default to a no-op colorizer
30
return aurora.NewAurora(false)
31
}
32
33
func (mw *MultiWriter) Write(event *ResultEvent) error {
34
for _, writer := range mw.writers {
35
if err := writer.Write(event); err != nil {
36
return err
37
}
38
}
39
return nil
40
}
41
42
func (mw *MultiWriter) WriteFailure(event *InternalWrappedEvent) error {
43
for _, writer := range mw.writers {
44
if err := writer.WriteFailure(event); err != nil {
45
return err
46
}
47
}
48
return nil
49
}
50
51
func (mw *MultiWriter) Request(templateID, url, requestType string, err error) {
52
for _, writer := range mw.writers {
53
writer.Request(templateID, url, requestType, err)
54
}
55
}
56
57
func (mw *MultiWriter) WriteStoreDebugData(host, templateID, eventType string, data string) {
58
for _, writer := range mw.writers {
59
writer.WriteStoreDebugData(host, templateID, eventType, data)
60
}
61
}
62
63
func (mw *MultiWriter) RequestStatsLog(statusCode, response string) {
64
for _, writer := range mw.writers {
65
writer.RequestStatsLog(statusCode, response)
66
}
67
}
68
69
func (mw *MultiWriter) ResultCount() int {
70
count := 0
71
for _, writer := range mw.writers {
72
if count := writer.ResultCount(); count > 0 {
73
return count
74
}
75
}
76
return count
77
}
78
79