javascriptRequestRenderer.jsx 895 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { Fence } from '@/components/Fence'
  2. import renderRequestBody from '@/lib/api/renderRequestBody'
  3. const JavascriptRequestRenderer = ({ method, url, headers, body }) => {
  4. const headerString = headers
  5. ? headers.map(({ key, value }) => `'${key}': '${value}'`).join(', ')
  6. : ''
  7. const bodyString = body ? renderRequestBody(body) : ''
  8. const object = {
  9. method: 'POST',
  10. headers: headers
  11. ? `{${headerString}}`
  12. : { 'Content-Type': 'application/json' },
  13. body: {
  14. jsonrpc: '2.0',
  15. id: 'test',
  16. method: method,
  17. id: 'test',
  18. params: bodyString,
  19. },
  20. }
  21. const code = `const res = await fetch('${url}', ${JSON.stringify(
  22. object,
  23. null,
  24. 2
  25. )})
  26. const data = await response.json();
  27. `
  28. return (
  29. <Fence className="w-full" language="javascript">
  30. {code}
  31. </Fence>
  32. )
  33. }
  34. export default JavascriptRequestRenderer