Add Proto to request detail, update theme

This commit is contained in:
David Stotijn
2020-09-21 22:27:10 +02:00
parent fe1ddabda3
commit 7defc19d1a
9 changed files with 75 additions and 13 deletions

View File

@ -1,4 +1,4 @@
import { green, orange, red } from "@material-ui/core/colors"; import { teal, orange, red } from "@material-ui/core/colors";
import FiberManualRecordIcon from "@material-ui/icons/FiberManualRecord"; import FiberManualRecordIcon from "@material-ui/icons/FiberManualRecord";
function HttpStatusIcon({ status }: { status: number }): JSX.Element { function HttpStatusIcon({ status }: { status: number }): JSX.Element {
@ -6,7 +6,7 @@ function HttpStatusIcon({ status }: { status: number }): JSX.Element {
switch (Math.floor(status / 100)) { switch (Math.floor(status / 100)) {
case 2: case 2:
case 3: case 3:
return <FiberManualRecordIcon style={{ ...style, color: green[400] }} />; return <FiberManualRecordIcon style={{ ...style, color: teal[400] }} />;
case 4: case 4:
return <FiberManualRecordIcon style={{ ...style, color: orange[400] }} />; return <FiberManualRecordIcon style={{ ...style, color: orange[400] }} />;
case 5: case 5:

View File

@ -10,6 +10,7 @@ const HTTP_REQUEST_LOG = gql`
id id
method method
url url
proto
body body
response { response {
proto proto
@ -30,17 +31,17 @@ function LogDetail({ requestId: id }: Props): JSX.Element {
variables: { id }, variables: { id },
}); });
if (loading) return "Loading..."; if (loading) return <div>"Loading..."</div>;
if (error) return `Error: ${error.message}`; if (error) return <div>`Error: ${error.message}`</div>;
const { method, url, body, response } = data.httpRequestLog; const { method, url, proto, body, response } = data.httpRequestLog;
return ( return (
<div> <div>
<Grid container item spacing={2}> <Grid container item spacing={2}>
<Grid item xs={6}> <Grid item xs={6}>
<Box component={Paper} maxHeight="60vh" overflow="scroll"> <Box component={Paper} maxHeight="60vh" overflow="scroll">
<RequestDetail request={{ method, url, body }} /> <RequestDetail request={{ method, url, proto, body }} />
</Box> </Box>
</Grid> </Grid>
<Grid item xs={6}> <Grid item xs={6}>

View File

@ -6,12 +6,13 @@ interface Props {
request: { request: {
method: string; method: string;
url: string; url: string;
proto: string;
body?: string; body?: string;
}; };
} }
function RequestDetail({ request }: Props): JSX.Element { function RequestDetail({ request }: Props): JSX.Element {
const { method, url, body } = request; const { method, url, proto, body } = request;
const parsedUrl = new URL(url); const parsedUrl = new URL(url);
console.log(parsedUrl); console.log(parsedUrl);
@ -24,7 +25,7 @@ function RequestDetail({ request }: Props): JSX.Element {
style={{ fontSize: "1rem", whiteSpace: "nowrap" }} style={{ fontSize: "1rem", whiteSpace: "nowrap" }}
> >
{request.method}{" "} {request.method}{" "}
{decodeURIComponent(parsedUrl.pathname + parsedUrl.search)} {decodeURIComponent(parsedUrl.pathname + parsedUrl.search)} {proto}
</Typography> </Typography>
</Box> </Box>
<Box> <Box>

View File

@ -34,8 +34,8 @@ interface Props {
function RequestList({ onLogClick }: Props): JSX.Element { function RequestList({ onLogClick }: Props): JSX.Element {
const { loading, error, data } = useQuery(HTTP_REQUEST_LOGS); const { loading, error, data } = useQuery(HTTP_REQUEST_LOGS);
if (loading) return "Loading..."; if (loading) return <div>"Loading..."</div>;
if (error) return `Error: ${error.message}`; if (error) return <div>`Error: ${error.message}`</div>;
const { httpRequestLogs: logs } = data; const { httpRequestLogs: logs } = data;

View File

@ -1,7 +1,16 @@
import { createMuiTheme } from "@material-ui/core/styles"; import { createMuiTheme } from "@material-ui/core/styles";
import { red } from "@material-ui/core/colors"; import teal from "@material-ui/core/colors/teal";
import green from "@material-ui/core/colors/green";
// Create a theme instance. const theme = createMuiTheme({
const theme = createMuiTheme({}); palette: {
primary: {
main: teal[500],
},
secondary: {
main: green[500],
},
},
});
export default theme; export default theme;

View File

@ -46,6 +46,7 @@ type ComplexityRoot struct {
Body func(childComplexity int) int Body func(childComplexity int) int
ID func(childComplexity int) int ID func(childComplexity int) int
Method func(childComplexity int) int Method func(childComplexity int) int
Proto func(childComplexity int) int
Response func(childComplexity int) int Response func(childComplexity int) int
Timestamp func(childComplexity int) int Timestamp func(childComplexity int) int
URL func(childComplexity int) int URL func(childComplexity int) int
@ -106,6 +107,13 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in
return e.complexity.HTTPRequestLog.Method(childComplexity), true return e.complexity.HTTPRequestLog.Method(childComplexity), true
case "HttpRequestLog.proto":
if e.complexity.HTTPRequestLog.Proto == nil {
break
}
return e.complexity.HTTPRequestLog.Proto(childComplexity), true
case "HttpRequestLog.response": case "HttpRequestLog.response":
if e.complexity.HTTPRequestLog.Response == nil { if e.complexity.HTTPRequestLog.Response == nil {
break break
@ -235,6 +243,7 @@ var sources = []*ast.Source{
id: ID! id: ID!
url: String! url: String!
method: HttpMethod! method: HttpMethod!
proto: String!
body: String body: String
timestamp: Time! timestamp: Time!
response: HttpResponseLog response: HttpResponseLog
@ -440,6 +449,40 @@ func (ec *executionContext) _HttpRequestLog_method(ctx context.Context, field gr
return ec.marshalNHttpMethod2githubᚗcomᚋdstotijnᚋgurpᚋpkgᚋapiᚐHTTPMethod(ctx, field.Selections, res) return ec.marshalNHttpMethod2githubᚗcomᚋdstotijnᚋgurpᚋpkgᚋapiᚐHTTPMethod(ctx, field.Selections, res)
} }
func (ec *executionContext) _HttpRequestLog_proto(ctx context.Context, field graphql.CollectedField, obj *HTTPRequestLog) (ret graphql.Marshaler) {
defer func() {
if r := recover(); r != nil {
ec.Error(ctx, ec.Recover(ctx, r))
ret = graphql.Null
}
}()
fc := &graphql.FieldContext{
Object: "HttpRequestLog",
Field: field,
Args: nil,
IsMethod: false,
}
ctx = graphql.WithFieldContext(ctx, fc)
resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
ctx = rctx // use context from middleware stack in children
return obj.Proto, nil
})
if err != nil {
ec.Error(ctx, err)
return graphql.Null
}
if resTmp == nil {
if !graphql.HasFieldError(ctx, fc) {
ec.Errorf(ctx, "must not be null")
}
return graphql.Null
}
res := resTmp.(string)
fc.Result = res
return ec.marshalNString2string(ctx, field.Selections, res)
}
func (ec *executionContext) _HttpRequestLog_body(ctx context.Context, field graphql.CollectedField, obj *HTTPRequestLog) (ret graphql.Marshaler) { func (ec *executionContext) _HttpRequestLog_body(ctx context.Context, field graphql.CollectedField, obj *HTTPRequestLog) (ret graphql.Marshaler) {
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
@ -1933,6 +1976,11 @@ func (ec *executionContext) _HttpRequestLog(ctx context.Context, sel ast.Selecti
if out.Values[i] == graphql.Null { if out.Values[i] == graphql.Null {
invalids++ invalids++
} }
case "proto":
out.Values[i] = ec._HttpRequestLog_proto(ctx, field, obj)
if out.Values[i] == graphql.Null {
invalids++
}
case "body": case "body":
out.Values[i] = ec._HttpRequestLog_body(ctx, field, obj) out.Values[i] = ec._HttpRequestLog_body(ctx, field, obj)
case "timestamp": case "timestamp":

View File

@ -13,6 +13,7 @@ type HTTPRequestLog struct {
ID string `json:"id"` ID string `json:"id"`
URL string `json:"url"` URL string `json:"url"`
Method HTTPMethod `json:"method"` Method HTTPMethod `json:"method"`
Proto string `json:"proto"`
Body *string `json:"body"` Body *string `json:"body"`
Timestamp time.Time `json:"timestamp"` Timestamp time.Time `json:"timestamp"`
Response *HTTPResponseLog `json:"response"` Response *HTTPResponseLog `json:"response"`

View File

@ -58,6 +58,7 @@ func parseRequestLog(req reqlog.Request) (HTTPRequestLog, error) {
log := HTTPRequestLog{ log := HTTPRequestLog{
ID: req.ID.String(), ID: req.ID.String(),
URL: req.Request.URL.String(), URL: req.Request.URL.String(),
Proto: req.Request.Proto,
Method: method, Method: method,
Timestamp: req.Timestamp, Timestamp: req.Timestamp,
} }

View File

@ -2,6 +2,7 @@ type HttpRequestLog {
id: ID! id: ID!
url: String! url: String!
method: HttpMethod! method: HttpMethod!
proto: String!
body: String body: String
timestamp: Time! timestamp: Time!
response: HttpResponseLog response: HttpResponseLog