github.com/kyleu/dbaudit@v0.0.2-0.20240321155047-ff2f2c940496/views/vadmin/Request.html (about)

     1  <!-- Content managed by Project Forge, see [projectforge.md] for details. -->
     2  {% import (
     3    "net/http"
     4  
     5    "github.com/samber/lo"
     6  
     7    "github.com/kyleu/dbaudit/app"
     8    "github.com/kyleu/dbaudit/app/controller/cutil"
     9    "github.com/kyleu/dbaudit/app/util"
    10    "github.com/kyleu/dbaudit/views/components"
    11    "github.com/kyleu/dbaudit/views/layout"
    12  ) %}
    13  
    14  {% code type Request struct {
    15    layout.Basic
    16    Rsp http.ResponseWriter
    17    Req *http.Request
    18  } %}
    19  
    20  {% func (p *Request) Body(as *app.State, ps *cutil.PageState) %}
    21    <div class="card">
    22      <div class="right"><a href="#modal-ps"><button type="button">Page State</button></a></div>
    23      <h3>Request Debug</h3>
    24      <div class="overflow full-width">
    25        <table>
    26          <thead>
    27            <tr>
    28              <th>Key</th>
    29              <th>Value</th>
    30            </tr>
    31          </thead>
    32          <tbody>
    33            <tr>
    34              <td>URL</td>
    35              <td>{%s p.Req.URL.String() %}</td>
    36            </tr>
    37            <tr>
    38              <td>Protocol</td>
    39              <td>{%s p.Req.URL.Scheme %}</td>
    40            </tr>
    41            <tr>
    42              <td>Host</td>
    43              <td>{%s p.Req.URL.Host %}</td>
    44            </tr>
    45            <tr>
    46              <td>Path</td>
    47              <td>{%s p.Req.URL.Path %}</td>
    48            </tr>
    49            <tr>
    50              <td>Query String</td>
    51              <td>{%s p.Req.URL.RawQuery %}</td>
    52            </tr>
    53            <tr>
    54              <td>Body Size</td>
    55              <td>{%s util.ByteSizeSI(int64(len(ps.RequestBody))) %}</td>
    56            </tr>
    57            <tr>
    58              <td>Browser</td>
    59              <td>{%s ps.Browser %} {%s ps.BrowserVersion %}</td>
    60            </tr>
    61            <tr>
    62              <td>OS</td>
    63              <td>{%s ps.OS %} {%s ps.OSVersion %}</td>
    64            </tr>
    65          </tbody>
    66        </table>
    67      </div>
    68    </div>
    69    {%- if len(p.Req.Header) > 0 -%}
    70    {%- code hd := cutil.RequestHeadersMap(p.Req) -%}
    71    <div class="card">
    72      <h3>Headers</h3>
    73      <div class="overflow full-width">
    74        <table>
    75          <thead>
    76            <tr>
    77              <th>Key</th>
    78              <th>Value</th>
    79            </tr>
    80          </thead>
    81          <tbody>
    82            {%- for _, k := range util.ArraySorted(lo.Keys(hd)) -%}
    83            <tr>
    84              <td class="nowrap">{%s k %}</td>
    85              <td>{%s hd.GetStringOpt(k) %}</td>
    86            </tr>
    87            {%- endfor -%}
    88          </tbody>
    89        </table>
    90      </div>
    91    </div>
    92    {%- endif -%}
    93    {%= components.JSONModal("ps", "Page State", ps, 1) %}
    94  {% endfunc %}