(output io.Writer, e session.Event)
| 130 | } |
| 131 | |
| 132 | func (mod *EventsStream) viewHttpRequest(output io.Writer, e session.Event) { |
| 133 | se := e.Data.(net_sniff.SnifferEvent) |
| 134 | req := se.Data.(net_sniff.HTTPRequest) |
| 135 | |
| 136 | fmt.Fprintf(output, "[%s] [%s] %s\n", |
| 137 | e.Time.Format(mod.timeFormat), |
| 138 | tui.Green(e.Tag), |
| 139 | se.Message) |
| 140 | |
| 141 | if mod.shouldDumpHttpRequest(req) { |
| 142 | dump := fmt.Sprintf("%s %s %s\n", tui.Bold(req.Method), req.URL, tui.Dim(req.Proto)) |
| 143 | dump += fmt.Sprintf("%s: %s\n", tui.Blue("Host"), tui.Yellow(req.Host)) |
| 144 | for name, values := range req.Headers { |
| 145 | for _, value := range values { |
| 146 | dump += fmt.Sprintf("%s: %s\n", tui.Blue(name), tui.Yellow(value)) |
| 147 | } |
| 148 | } |
| 149 | |
| 150 | if req.Body != nil { |
| 151 | if req.IsType("application/x-www-form-urlencoded") { |
| 152 | dump += mod.dumpForm(req.Body) |
| 153 | } else if req.IsType("text/plain") { |
| 154 | dump += mod.dumpText(req.Body) |
| 155 | } else if req.IsType("text/xml") { |
| 156 | dump += mod.dumpXML(req.Body) |
| 157 | } else if req.IsType("gzip") { |
| 158 | dump += mod.dumpGZIP(req.Body) |
| 159 | } else if req.IsType("application/json") { |
| 160 | dump += mod.dumpJSON(req.Body) |
| 161 | } else { |
| 162 | if mod.dumpFormatHex { |
| 163 | dump += mod.dumpRaw(req.Body) |
| 164 | } else { |
| 165 | dump += mod.dumpText(req.Body) |
| 166 | } |
| 167 | } |
| 168 | } |
| 169 | |
| 170 | fmt.Fprintf(output, "\n%s\n", dump) |
| 171 | } |
| 172 | } |
| 173 | |
| 174 | func (mod *EventsStream) viewHttpResponse(output io.Writer, e session.Event) { |
| 175 | se := e.Data.(net_sniff.SnifferEvent) |
no test coverage detected