MCPcopy Create free account
hub / github.com/buggregator/server / Handle

Method Handle

modules/httpdumps/handler.go:31–163  ·  view source on GitHub ↗
(r *http.Request)

Source from the content-addressed store, hash-verified

29}
30
31func (h *handler) Handle(r *http.Request) (*event.Incoming, error) {
32 eventUUID := event.GenerateUUID()
33
34 // Headers as arrays (PSR-7 format).
35 headers := make(map[string][]string)
36 for k, v := range r.Header {
37 headers[k] = v
38 }
39
40 // Parse query params.
41 query := make(map[string]any)
42 for k, v := range r.URL.Query() {
43 if len(v) == 1 {
44 query[k] = v[0]
45 } else {
46 query[k] = v
47 }
48 }
49
50 cookies := make(map[string]string)
51 for _, c := range r.Cookies() {
52 cookies[c.Name] = c.Value
53 }
54
55 uri := strings.TrimPrefix(r.URL.Path, "/")
56 ct := r.Header.Get("Content-Type")
57 post := make(map[string]any)
58 var bodyStr string
59 var files []map[string]any
60
61 if strings.Contains(ct, "multipart/form-data") {
62 // Parse multipart — extract files and form fields.
63 r.ParseMultipartForm(10 << 20) // 10MB max
64 if r.MultipartForm != nil {
65 // Form values → post.
66 for k, v := range r.MultipartForm.Value {
67 if len(v) == 1 {
68 post[k] = v[0]
69 } else {
70 post[k] = v
71 }
72 }
73
74 // Files → store and collect metadata.
75 for _, fileHeaders := range r.MultipartForm.File {
76 for _, fh := range fileHeaders {
77 f, err := fh.Open()
78 if err != nil {
79 continue
80 }
81 content, err := io.ReadAll(f)
82 f.Close()
83 if err != nil {
84 continue
85 }
86
87 attUUID := event.GenerateUUID()
88 path := eventUUID + "/" + fh.Filename

Callers 4

TestHandler_Handle_GETFunction · 0.95

Calls 3

GenerateUUIDFunction · 0.92
StoreMethod · 0.65
GetMethod · 0.45

Tested by 4

TestHandler_Handle_GETFunction · 0.76