languageRenderer.jsx 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. import { useState } from 'react'
  2. import EndPointSelector from './endPointSelector'
  3. import CSharpRequestRenderer from './languageComponents/cSharpRenderer'
  4. import CurlRequestRenderer from './languageComponents/curlRequestRenderer'
  5. import GoRequestRenderer from './languageComponents/goRequestRenderer'
  6. import JavaRenderer from './languageComponents/javaRenderer'
  7. import JavascriptRequestRenderer from './languageComponents/javascriptRequestRenderer'
  8. import KotlinRenderer from './languageComponents/kotlinRenderer'
  9. import PhpRenderer from './languageComponents/phpRenderer'
  10. import PythonRequestRenderer from './languageComponents/pythonRequestRenderer'
  11. import RubyRenderer from './languageComponents/rubyRenderer'
  12. import LanguageSelector from './languageSelector'
  13. const LanguageRenderer = ({ api, body, setActiveEndPoint, activeEndPoint }) => {
  14. const [activeLanguage, setActiveLanguage] = useState('javascript')
  15. function strToTitleCase(str) {
  16. return str.charAt(0).toUpperCase() + str.slice(1)
  17. }
  18. const renderLanguage = (activeLanguage, activeEndpoint) => {
  19. const headers = api.headers
  20. ? api.headers
  21. : { 'Content-Type': 'application/json' }
  22. // const object = {
  23. // method: 'POST',
  24. // headers: headers,
  25. // body: {
  26. // jsonrpc: rpcVersion ? rpcVersion : '2.0',
  27. // id: id ? id : 1,
  28. // method: bodyMethod,
  29. // params: httpBody,
  30. // },
  31. // }
  32. switch (activeLanguage) {
  33. case 'javascript':
  34. return (
  35. <div className="flex flex-col">
  36. <div className="-mb-3 text-sm font-medium text-gray-800 dark:text-neutral-400">
  37. {strToTitleCase(activeLanguage)} Request Example
  38. </div>
  39. <JavascriptRequestRenderer
  40. method={api.method}
  41. url={activeEndPoint}
  42. headers={headers}
  43. bodyMethod={body.method}
  44. bodyParams={body.params}
  45. />
  46. </div>
  47. )
  48. case 'python':
  49. return (
  50. <div className="flex flex-col">
  51. <div className="-mb-3 text-sm font-medium text-gray-800 dark:text-neutral-400">
  52. {strToTitleCase(activeLanguage)} Request Example
  53. </div>
  54. <PythonRequestRenderer
  55. method={api.method}
  56. url={activeEndPoint}
  57. headers={api.headers}
  58. body={api.params}
  59. />
  60. </div>
  61. )
  62. case 'curl':
  63. return (
  64. <div className="flex flex-col">
  65. <div className="-mb-3 text-sm font-medium text-gray-800 dark:text-neutral-400">
  66. {strToTitleCase(activeLanguage)} Request Example
  67. </div>
  68. <CurlRequestRenderer
  69. method={api.method}
  70. url={activeEndPoint}
  71. headers={api.headers}
  72. body={api.params}
  73. />
  74. </div>
  75. )
  76. case 'go':
  77. return (
  78. <div className="flex flex-col">
  79. <div className="-mb-3 text-sm font-medium text-gray-800 dark:text-neutral-400">
  80. {strToTitleCase(activeLanguage)} Request Example
  81. </div>
  82. <GoRequestRenderer
  83. method={api.method}
  84. url={activeEndPoint}
  85. headers={api.headers}
  86. body={api.params}
  87. />
  88. </div>
  89. )
  90. case 'csharp':
  91. return (
  92. <div className="flex flex-col">
  93. <div className="-mb-3 text-sm font-medium text-gray-800 dark:text-neutral-400">
  94. {strToTitleCase(activeLanguage)} Request Example
  95. </div>
  96. <CSharpRequestRenderer
  97. method={api.method}
  98. url={activeEndPoint}
  99. headers={api.headers}
  100. body={api.params}
  101. />
  102. </div>
  103. )
  104. case 'java':
  105. return (
  106. <div className="flex flex-col">
  107. <div className="-mb-3 text-sm font-medium text-gray-800 dark:text-neutral-400">
  108. {strToTitleCase(activeLanguage)} Request Example
  109. </div>
  110. <JavaRenderer
  111. method={api.method}
  112. url={activeEndPoint}
  113. headers={api.headers}
  114. body={api.params}
  115. />
  116. </div>
  117. )
  118. case 'php':
  119. return (
  120. <div className="flex flex-col">
  121. <div className="-mb-3 text-sm font-medium text-gray-800 dark:text-neutral-400">
  122. {strToTitleCase(activeLanguage)} Request Example
  123. </div>
  124. <PhpRenderer
  125. method={api.method}
  126. url={activeEndPoint}
  127. headers={api.headers}
  128. body={api.params}
  129. />
  130. </div>
  131. )
  132. case 'kotlin':
  133. return (
  134. <div className="flex flex-col">
  135. <div className="-mb-3 text-sm font-medium text-gray-800 dark:text-neutral-400">
  136. {strToTitleCase(activeLanguage)} Request Example
  137. </div>
  138. <KotlinRenderer
  139. method={api.method}
  140. url={activeEndPoint}
  141. headers={api.headers}
  142. body={api.params}
  143. />
  144. </div>
  145. )
  146. case 'ruby':
  147. return (
  148. <div className="flex flex-col">
  149. <div className="-mb-3 text-sm font-medium text-gray-800 dark:text-neutral-400">
  150. {strToTitleCase(activeLanguage)} Request Example
  151. </div>
  152. <RubyRenderer
  153. method={api.method}
  154. url={activeEndPoint}
  155. headers={api.headers}
  156. body={api.params}
  157. />
  158. </div>
  159. )
  160. }
  161. }
  162. return (
  163. <div className="flex w-full flex-col gap-8 overflow-hidden">
  164. <EndPointSelector
  165. setActiveEndpoint={(endpoint) => setActiveEndPoint(endpoint)}
  166. />
  167. <LanguageSelector
  168. activeLanguage={activeLanguage}
  169. setActiveLanguage={(language) => setActiveLanguage(language)}
  170. />
  171. {renderLanguage(activeLanguage)}
  172. </div>
  173. )
  174. }
  175. export default LanguageRenderer