summaryrefslogtreecommitdiffstats
path: root/src/components/RequestSummary/RequestSummary.tsx
blob: af928c063713ad7c11907eeaae85f7cfe7a3c431 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import {RequestResponse} from "~hooks/useRequests";
import * as React from "react";
import classNames from "classnames";

import styles from './RequestSummary.module.scss';

interface RequestSummaryProps {
  requestResponse: RequestResponse
  className?: string
}

function isBetween(value: number, min: number, max: number) {
  return value >= min && value <= max
}

export default function RequestSummary({ requestResponse: { request, response }, className = ''}: RequestSummaryProps) {
  const statusCode = response?.status ?? 0
  return (
    <div className={classNames(styles.requestSummary, className)}>
      <span className={styles.method}>{ request.method }</span>
      <p>{ request.path }</p>
      <span className={classNames(styles.statusCode, {
        [styles.info]: isBetween(statusCode, 100, 199),
        [styles.success]: isBetween(statusCode, 200, 299),
        [styles.redirect]: isBetween(statusCode, 300, 399),
        [styles.clientError]: isBetween(statusCode, 400, 499),
        [styles.serverError]: isBetween(statusCode, 500, 599)
      })}>
        { response?.status ?? 'Loading...'}
      </span>
    </div>
  )
}