@@ -24,32 +24,45 @@ const darkTheme = createTheme({
24
24
} ,
25
25
} ) ;
26
26
27
+ class Request {
28
+ Method : string ;
29
+ URL : string ;
30
+ Headers : string ;
31
+ Body : string ;
32
+
33
+ constructor ( source : any = { } ) {
34
+ if ( 'string' === typeof source ) source = JSON . parse ( source ) ;
35
+ this . Method = source [ "Method" ] ;
36
+ this . URL = source [ "URL" ] ;
37
+ this . Headers = source [ "Headers" ] ;
38
+ this . Body = source [ "Body" ] ;
39
+ }
40
+ }
41
+
27
42
28
43
function App ( ) {
44
+ const [ request , setRequest ] = useState ( new Request ( { "Method" : "GET" } ) )
29
45
const [ result , setResult ] = useState ( new main . RequestResult )
30
- const [ resultText , setResultText ] = useState ( "" ) ;
31
46
const [ curlBody , setCurlBody ] = useState ( "" ) ;
32
- const [ reqMethod , setReqMethod ] = useState ( "GET" ) ;
33
- const [ errorText , setErrorText ] = useState ( "" ) ;
34
- const [ reqBody , setReqBody ] = useState ( "" ) ;
35
- const [ reqHeaders , setReqHeaders ] = useState ( "" ) ;
36
- const [ resultHeader , setResultHeader ] = useState ( "" ) ;
37
- const [ url , setURL ] = useState ( '' ) ;
38
47
const [ open , setOpen ] = useState ( false ) ;
39
- const updateURL = ( e : any ) => setURL ( e . target . value ) ;
40
- const updateResultText = ( result : any ) => {
41
- setResult ( result )
42
- setResultHeader ( result . HeadersStr )
43
- setResultText ( result . Body )
44
- setErrorText ( result . Error )
48
+
49
+
50
+ const handleRequestChange = ( e : any ) => {
51
+ const { name, value } = e . target ;
52
+ setRequest ( prevState => ( {
53
+ ...prevState ,
54
+ [ name ] : value
55
+ } ) ) ;
45
56
} ;
46
- const updateCurlResult = ( result : any ) => {
47
- setURL ( result . URL )
48
- setReqBody ( result . RequestBody )
49
- setReqHeaders ( result . ReqHeaders )
50
- setReqMethod ( result . Method )
51
- handleClose ( )
52
- }
57
+
58
+ const handleResultChange = ( e : any ) => {
59
+ const { name, value } = e . target ;
60
+ setResult ( prevState => ( {
61
+ ...prevState ,
62
+ [ name ] : value
63
+ } ) ) ;
64
+ } ;
65
+
53
66
const handleOpen = ( ) => setOpen ( true ) ;
54
67
const handleClose = ( ) => setOpen ( false ) ;
55
68
const style = {
@@ -62,19 +75,23 @@ function App() {
62
75
p : 4 ,
63
76
} ;
64
77
65
- const updateMethod = ( e : any ) => setReqMethod ( e . target . value ) ;
66
- const updateBody = ( e :any ) => setReqBody ( e . target . value )
67
- const updateReqHeaders = ( e :any ) => setReqHeaders ( e . target . value )
68
78
const updateCurlBody = ( e :any ) => setCurlBody ( e . target . value )
69
79
function makeRequest ( ) {
70
- MakeRequest ( url , reqMethod , reqBody , reqHeaders ) . then ( updateResultText ) ;
80
+ console . log ( request )
81
+ MakeRequest ( request . URL , request . Method , request . Body , request . Headers ) . then ( setResult ) ;
71
82
}
72
83
73
84
function importCurl ( ) {
74
- console . log ( "importing curl" )
75
85
RunCurl ( curlBody ) . then ( ( result : any ) => {
76
- updateResultText ( result )
77
- updateCurlResult ( result )
86
+ let req = new Request ( {
87
+ "Method" : result . Method ,
88
+ "URL" : result . URL ,
89
+ "Body" : result . RequestBody ,
90
+ "Headers" : result . ReqHeaders ,
91
+ } )
92
+ setRequest ( req )
93
+ setResult ( result )
94
+ setOpen ( false )
78
95
} )
79
96
}
80
97
@@ -111,15 +128,16 @@ function App() {
111
128
< Button onClick = { handleOpen } variant = "outlined" > Curl</ Button >
112
129
</ Grid >
113
130
< Grid xs = { 1 } >
114
- < Select label = "Type" value = { reqMethod } className = "url" color = "success" variant = "standard" onChange = { updateMethod } >
131
+ < Select label = "Type" value = { request . Method } color = "success" name = "Method"
132
+ variant = "standard" onChange = { handleRequestChange } >
115
133
< MenuItem value = { "GET" } > GET</ MenuItem >
116
134
< MenuItem value = { "POST" } > POST</ MenuItem >
117
135
< MenuItem value = { "PUT" } > PUT</ MenuItem >
118
136
</ Select >
119
137
</ Grid >
120
138
< Grid xs = { 8 } >
121
- < TextField id = "url" className = "url" variant = "standard" value = { url }
122
- onChange = { updateURL } autoComplete = "off" name = "url " />
139
+ < TextField id = "url" className = "url" variant = "standard" value = { request . URL }
140
+ onChange = { handleRequestChange } autoComplete = "off" name = "URL " />
123
141
</ Grid >
124
142
< Grid xs = { 1 } >
125
143
< div id = "req-button-p" >
@@ -128,25 +146,25 @@ function App() {
128
146
</ Grid >
129
147
< Grid xs = { 4 } className = "req-headers-p" >
130
148
< Divider textAlign = "left" className = "req-header-div" color = "success" > < span > Request Headers</ span > </ Divider >
131
- < TextField id = "reqheaders" multiline className = "req-headers" variant = "filled" rows = { 10 } color = "success" value = { reqHeaders }
132
- onChange = { updateReqHeaders } autoComplete = "off" name = "reqheaders " />
149
+ < TextField id = "reqheaders" multiline className = "req-headers" variant = "filled" rows = { 10 } color = "success"
150
+ value = { request . Headers } onChange = { handleResultChange } autoComplete = "off" name = "Headers " />
133
151
</ Grid >
134
152
< Grid xs = { 8 } className = "req-body-p" >
135
153
< Divider textAlign = "left" className = "body-div" color = "primary" > < span > Request Body</ span > </ Divider >
136
154
< TextField id = "url" multiline className = "req-body" variant = "filled" rows = { 10 } color = "primary"
137
- onChange = { updateBody } autoComplete = "off" name = "reqbody " />
155
+ onChange = { handleResultChange } value = { result . RequestBody } autoComplete = "off" name = "RequestBody " />
138
156
</ Grid >
139
157
< Grid xs = { 4 } className = "headersp" >
140
158
< Divider textAlign = "left" className = "header-div" > < span color = '#82aaff' > Headers</ span > </ Divider >
141
- < div id = "headers" className = "headers" > < pre > { resultHeader } </ pre > </ div >
159
+ < div id = "headers" className = "headers" > < pre > { result . HeadersStr } </ pre > </ div >
142
160
</ Grid >
143
161
< Grid xs = { 8 } className = "resultp" >
144
162
< Divider textAlign = "left" className = "res-div" > < span color = '#c3e88d' > Response</ span > </ Divider >
145
- < div id = "result" className = "result" > < pre > { resultText } </ pre > </ div >
163
+ < div id = "result" className = "result" > < pre > { result . Body } </ pre > </ div >
146
164
</ Grid >
147
165
< Grid xs = { 12 } className = "errorp" >
148
166
< Divider textAlign = "left" className = "error-div" color = "error" > Error</ Divider >
149
- < div id = "error" className = "error" > < pre > { errorText } </ pre > </ div >
167
+ < div id = "error" className = "error" > < pre > { result . Error } </ pre > </ div >
150
168
</ Grid >
151
169
</ Grid >
152
170
</ CssVarsProvider >
0 commit comments