Skip to content

Commit 49a1b49

Browse files
committed
feat: reorganize codebase
1 parent d9255d1 commit 49a1b49

File tree

15 files changed

+110
-604
lines changed

15 files changed

+110
-604
lines changed

README.md

Lines changed: 26 additions & 528 deletions
Large diffs are not rendered by default.

assets/templates/partials/reqbuild_partial.html

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
<!-- templates/partials/reqbuild_partial.html -->
22

33
<div class="fade-me-in">
4-
{{ $scheme := .ReqBuild.Scheme }}
5-
{{ $connectTo := .ReqBuild.ConnectTo }}
6-
{{ $backend := .ReqBuild.Backend }}
7-
{{ $custom := .ReqBuild.ConnectCustom }}
8-
{{ $received := .ReqBuild.ReceivedHeaders }}
9-
{{ $excluded := .ReqBuild.ExcludedHeaders }}
4+
{{ $data := . }}
105
{{- range .Transactions.Set.Transactions }}
116
{{ if isTxTypeSession . }}{{ continue }}{{ end }}
127
<h3>{{ .TXID }}</h3>
13-
<pre><code class="language-bash">{{- curlCommand . $scheme $connectTo $backend $custom $received $excluded -}}</code></pre>
8+
<pre><code class="language-bash">{{- curlCommand . $data -}}</code></pre>
149
{{- end }}
1510
</div>
1611

cmd/server/varnishlog-parser.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"log/slog"
99
"os"
1010

11-
"github.com/aorith/varnishlog-parser/pkg/server"
11+
"github.com/aorith/varnishlog-parser/internal/server"
1212
)
1313

1414
var version string = "dev"

internal/server/html/helpers.go

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
// SPDX-License-Identifier: MIT
2+
3+
package html
4+
5+
import (
6+
"fmt"
7+
"strings"
8+
9+
"github.com/aorith/varnishlog-parser/render"
10+
"github.com/aorith/varnishlog-parser/vsl"
11+
)
12+
13+
func processReqBuildForm(tx *vsl.Transaction, cfg PageData) (*render.HTTPRequest, *render.Backend, error) {
14+
var backend *render.Backend
15+
16+
c := cfg.ReqBuild
17+
switch c.ConnectTo {
18+
case "backend":
19+
switch c.Backend {
20+
case "none":
21+
backend = nil
22+
23+
case "auto":
24+
if tx.TXType == vsl.TxTypeBereq {
25+
host, port, err := render.ParseBackend(tx.GetBackendConnStr())
26+
if err != nil {
27+
return nil, nil, fmt.Errorf("parsing backend failed: %q", err)
28+
}
29+
backend = render.NewBackend(host, port)
30+
}
31+
32+
default:
33+
host, port, err := render.ParseBackend(c.Backend)
34+
if err != nil {
35+
return nil, nil, fmt.Errorf("failure parsing backend string: %q", err)
36+
}
37+
backend = render.NewBackend(host, port)
38+
}
39+
40+
case "custom":
41+
if c.ConnectCustom == "" {
42+
return nil, nil, fmt.Errorf("parameter ConnectCustom is empty")
43+
}
44+
host, port, err := render.ParseBackend(c.ConnectCustom)
45+
if err != nil {
46+
return nil, nil, fmt.Errorf("error parsing backend: %q", err)
47+
}
48+
backend = render.NewBackend(host, port)
49+
50+
default:
51+
return nil, nil, fmt.Errorf("ConnectTo has an incorrect value: %s", c.ConnectTo)
52+
}
53+
54+
excludedHeaders := strings.Split(c.ExcludedHeaders, ",")
55+
for i, n := range excludedHeaders {
56+
excludedHeaders[i] = strings.TrimSpace(n)
57+
}
58+
59+
httpReq, err := render.NewHTTPRequest(tx, c.ReceivedHeaders, excludedHeaders)
60+
if err != nil {
61+
return nil, nil, fmt.Errorf("failure creating HTTPRequest object: %q", err)
62+
}
63+
64+
return httpReq, backend, nil
65+
}
66+
67+
func curlCommand(tx *vsl.Transaction, cfg PageData) string {
68+
httpReq, backend, err := processReqBuildForm(tx, cfg)
69+
if err != nil {
70+
return err.Error()
71+
}
72+
return httpReq.CurlCommand(cfg.ReqBuild.Scheme, backend)
73+
}
Lines changed: 2 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"text/template"
1212

1313
"github.com/aorith/varnishlog-parser/assets"
14-
"github.com/aorith/varnishlog-parser/pkg/render"
14+
"github.com/aorith/varnishlog-parser/render"
1515
"github.com/aorith/varnishlog-parser/vsl"
1616
"github.com/aorith/varnishlog-parser/vsl/summary"
1717
)
@@ -50,7 +50,7 @@ type PageData struct {
5050
}
5151

5252
var funcMap = template.FuncMap{
53-
"headersView": render.HeadersView,
53+
"headersView": render.HTMLHeadersTable,
5454
"renderTXLogTree": render.TxTreeHTML,
5555
"isTxTypeSession": func(tx *vsl.Transaction) bool { return tx.TXType == vsl.TxTypeSession },
5656
"curlCommand": curlCommand,
@@ -152,56 +152,3 @@ func executeTemplate(w io.Writer, tmpl *template.Template, name string, data any
152152
}
153153
return err
154154
}
155-
156-
func curlCommand(tx *vsl.Transaction, scheme, connectTo, backendStr, custom string, received bool, excluded string) string {
157-
var backend *render.Backend
158-
159-
switch connectTo {
160-
case "backend":
161-
switch backendStr {
162-
case "none":
163-
backend = nil
164-
165-
case "auto":
166-
if tx.TXType == vsl.TxTypeBereq {
167-
host, port, err := render.ParseBackend(tx.GetBackendConnStr())
168-
if err != nil {
169-
return "error parsing backend: " + err.Error()
170-
}
171-
backend = render.NewBackend(host, port)
172-
}
173-
174-
default:
175-
host, port, err := render.ParseBackend(backendStr)
176-
if err != nil {
177-
return "error parsing backend: " + err.Error()
178-
}
179-
backend = render.NewBackend(host, port)
180-
}
181-
182-
case "custom":
183-
if custom == "" {
184-
return "no value provided for the custom backend"
185-
}
186-
host, port, err := render.ParseBackend(custom)
187-
if err != nil {
188-
return "error parsing backend: " + err.Error()
189-
}
190-
backend = render.NewBackend(host, port)
191-
192-
default:
193-
return "unknown value for connectTo: " + connectTo
194-
}
195-
196-
excludedHeaders := strings.Split(excluded, ",")
197-
for i, n := range excludedHeaders {
198-
excludedHeaders[i] = strings.TrimSpace(n)
199-
}
200-
201-
httpReq, err := render.NewHTTPRequest(tx, received, excludedHeaders)
202-
if err != nil {
203-
return "error generating curl command: " + err.Error()
204-
}
205-
206-
return httpReq.CurlCommand(scheme, backend)
207-
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"strconv"
99

1010
"github.com/aorith/varnishlog-parser/assets"
11-
"github.com/aorith/varnishlog-parser/pkg/server/html"
11+
"github.com/aorith/varnishlog-parser/internal/server/html"
1212
)
1313

1414
func indexHandler(version string) func(http.ResponseWriter, *http.Request) {
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import (
1010
"github.com/aorith/varnishlog-parser/vsl"
1111
)
1212

13-
func HeadersView(ts vsl.TransactionSet, tx *vsl.Transaction) []string {
13+
// HTMLHeadersTable returns an HTML table with HTTP header states
14+
func HTMLHeadersTable(ts vsl.TransactionSet, tx *vsl.Transaction) []string {
1415
visited := make(map[vsl.VXID]bool)
1516
return headersView(ts, tx, visited)
1617
}
Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,8 @@ import (
1111
"github.com/aorith/varnishlog-parser/vsl"
1212
)
1313

14-
type CustomBuilder struct {
15-
strings.Builder
16-
}
17-
18-
// PadAdd is a helper function to append a fixed padding to the string
19-
func (b *CustomBuilder) PadAdd(s string) {
20-
b.WriteString(" " + s + "\n")
21-
}
22-
2314
// ParseBackend parses "<HOST/IP>:<PORT>" where HOST may be a hostname,
15+
//
2416
// IPv4, or IPv6 (possibly unbracketed). Returns host and port separately.
2517
func ParseBackend(s string) (host, port string, err error) {
2618
// Try the standard parser first (works for "host:port" and "[v6]:port").

0 commit comments

Comments
 (0)