File size: 1,694 Bytes
da67388
ff1a29c
da67388
 
ff1a29c
ca0baae
 
 
ff1a29c
 
 
4f085f4
ff1a29c
 
 
 
 
4f085f4
ff1a29c
 
da67388
ff1a29c
ca0baae
da67388
ff1a29c
 
ca0baae
 
e0533b0
 
 
 
 
 
 
ca0baae
 
 
 
 
 
e0533b0
 
 
 
 
 
 
ca0baae
 
 
 
 
 
e0533b0
 
 
 
 
 
 
ca0baae
 
 
 
ff1a29c
 
 
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import { useCopyToClipboard } from "react-use";
import { Options } from "redaxios";

import { ApiRoute } from "@/utils/type";

import { PythonSnippet } from "./python";
import { JavascriptSnippet } from "./javascript";
import { CurlSnippet } from "./curl";

export const Snippet = ({
  endpoint,
  headers,
  parameters,
  body,
}: {
  endpoint: ApiRoute;
  parameters?: Record<string, any>;
  headers?: Record<string, any>;
  body?: Options | undefined;
}) => {
  const [_, copyToClipboard] = useCopyToClipboard();

  const handleCopyToClipboard = (snippet: string) => copyToClipboard(snippet);

  return (
    <div className="mt-8 grid grid-cols-1 gap-4 w-full">
      <CurlSnippet
        endpoint={endpoint}
        headers={
          headers?.Authorization
            ? {
                Authorization: `Bearer ${headers.Authorization}`,
              }
            : {}
        }
        body={body}
        parameters={parameters}
        onCopyToClipboard={handleCopyToClipboard}
      />
      <JavascriptSnippet
        endpoint={endpoint}
        headers={
          headers?.Authorization
            ? {
                Authorization: `Bearer ${headers.Authorization}`,
              }
            : {}
        }
        body={body}
        parameters={parameters}
        onCopyToClipboard={handleCopyToClipboard}
      />
      <PythonSnippet
        endpoint={endpoint}
        headers={
          headers?.Authorization
            ? {
                Authorization: `Bearer ${headers.Authorization}`,
              }
            : {}
        }
        body={body}
        parameters={parameters}
        onCopyToClipboard={handleCopyToClipboard}
      />
    </div>
  );
};