1
1
/* eslint-disable jsx-a11y/label-has-associated-control */
2
2
/* eslint-disable jsx-a11y/label-has-for */
3
- import React from 'react' ;
4
- import { useSelector } from 'react-redux' ;
3
+ import React , { useEffect , useState } from 'react' ;
4
+ import { useSelector , useDispatch } from 'react-redux' ;
5
5
import uuid from 'uuid/v4' ;
6
+ import * as actions from '../../actions/actions' ;
6
7
import historyController from '../../controllers/historyController' ;
8
+ import connectionController from '../../controllers/reqResController' ;
7
9
import HeaderEntryForm from './NewRequest/HeaderEntryForm' ;
8
10
import BodyEntryForm from './NewRequest/BodyEntryForm.jsx' ;
9
11
import TestEntryForm from './NewRequest/TestEntryForm.jsx' ;
10
12
import CookieEntryForm from './NewRequest/CookieEntryForm.jsx' ;
11
13
import RestMethodAndEndpointEntryForm from './NewRequest/RestMethodAndEndpointEntryForm.jsx' ;
12
14
import NewRequestButton from './NewRequest/NewRequestButton.jsx' ;
15
+ import SendRequestButton from './NewRequest/SendRequestButton.jsx'
16
+ import RestRequestContent from '../display/RestRequestContent' ;
17
+ import SingleReqResContainer from '../containers/SingleReqResContainer' ;
18
+
19
+ function RestContainer ( props ) {
20
+ const dispatch = useDispatch ( ) ;
21
+
22
+ const {
23
+ resetComposerFields,
24
+ setNewRequestFields,
25
+ newRequestFields,
26
+ newRequestFields : {
27
+ gRPC,
28
+ url,
29
+ method,
30
+ graphQL,
31
+ restUrl,
32
+ wsUrl,
33
+ webrtc,
34
+ gqlUrl,
35
+ grpcUrl,
36
+ network,
37
+ testContent,
38
+ } ,
39
+ setNewRequestBody,
40
+ setNewTestContent,
41
+ newRequestBody,
42
+ newRequestBody : {
43
+ JSONFormatted,
44
+ rawType,
45
+ bodyContent,
46
+ bodyVariables,
47
+ bodyType,
48
+ } ,
49
+ setNewRequestHeaders,
50
+ newRequestHeaders,
51
+ newRequestHeaders : { headersArr } ,
52
+ setNewRequestCookies,
53
+ newRequestCookies,
54
+ newRequestCookies : { cookiesArr } ,
55
+ setNewRequestStreams,
56
+ newRequestStreams,
57
+ newRequestStreams : { protoPath } ,
58
+ setNewRequestSSE,
59
+ newRequestSSE : { isSSE } ,
60
+ currentTab,
61
+ introspectionData,
62
+ setComposerWarningMessage,
63
+ setComposerDisplay,
64
+ warningMessage,
65
+ reqResAdd,
66
+ setWorkspaceActiveTab
67
+ } = props ;
13
68
14
- function RestContainer ( {
15
- resetComposerFields,
16
- setNewRequestFields,
17
- newRequestFields,
18
- newRequestFields : {
19
- gRPC,
20
- url,
21
- method,
22
- graphQL,
23
- restUrl,
24
- wsUrl,
25
- webrtc,
26
- gqlUrl,
27
- grpcUrl,
28
- network,
29
- testContent,
30
- } ,
31
- setNewRequestBody,
32
- setNewTestContent,
33
- newRequestBody,
34
- newRequestBody : {
35
- JSONFormatted,
36
- rawType,
37
- bodyContent,
38
- bodyVariables,
39
- bodyType,
40
- } ,
41
- setNewRequestHeaders,
42
- newRequestHeaders,
43
- newRequestHeaders : { headersArr } ,
44
- setNewRequestCookies,
45
- newRequestCookies,
46
- newRequestCookies : { cookiesArr } ,
47
- setNewRequestStreams,
48
- newRequestStreams,
49
- newRequestStreams : { protoPath } ,
50
- setNewRequestSSE,
51
- newRequestSSE : { isSSE } ,
52
- currentTab,
53
- introspectionData,
54
- setComposerWarningMessage,
55
- setComposerDisplay,
56
- warningMessage,
57
- reqResAdd,
58
- setWorkspaceActiveTab,
59
- } ) {
60
69
const requestValidationCheck = ( ) => {
61
70
const validationMessage = { } ;
62
71
//Error conditions...
@@ -74,14 +83,98 @@ function RestContainer({
74
83
return validationMessage ;
75
84
} ;
76
85
86
+ const sendNewRequest = ( ) => {
87
+ const warnings = requestValidationCheck ( ) ;
88
+ if ( Object . keys ( warnings ) . length > 0 ) {
89
+ setComposerWarningMessage ( warnings ) ;
90
+ return ;
91
+ }
92
+
93
+ let reqRes ;
94
+ const protocol = url . match ( / ( h t t p s ? : \/ \/ ) | ( w s s ? : \/ \/ ) / ) [ 0 ] ;
95
+ // HTTP && GRAPHQL QUERY & MUTATION REQUESTS
96
+ if ( ! / w s s ? : \/ \/ / . test ( protocol ) && ! gRPC ) {
97
+ const URIWithoutProtocol = `${ url . split ( protocol ) [ 1 ] } /` ;
98
+ URIWithoutProtocol ; // deleteable ???
99
+ const host = protocol + URIWithoutProtocol . split ( '/' ) [ 0 ] ;
100
+ let path = `/${ URIWithoutProtocol . split ( '/' )
101
+ . splice ( 1 )
102
+ . join ( '/' )
103
+ . replace ( / \/ { 2 , } / g, '/' ) } `;
104
+ if ( path . charAt ( path . length - 1 ) === '/' && path . length > 1 ) {
105
+ path = path . substring ( 0 , path . length - 1 ) ;
106
+ }
107
+ path = path . replace ( / h t t p s ? : \/ / g, 'http://' ) ;
108
+ reqRes = {
109
+ id : uuid ( ) ,
110
+ createdAt : new Date ( ) ,
111
+ protocol : url . match ( / h t t p s ? : \/ \/ / ) [ 0 ] ,
112
+ host,
113
+ path,
114
+ url,
115
+ webrtc,
116
+ graphQL,
117
+ gRPC,
118
+ timeSent : null ,
119
+ timeReceived : null ,
120
+ connection : 'uninitialized' ,
121
+ connectionType : null ,
122
+ checkSelected : false ,
123
+ protoPath,
124
+ request : {
125
+ method,
126
+ headers : headersArr . filter ( ( header ) => header . active && ! ! header . key ) ,
127
+ cookies : cookiesArr . filter ( ( cookie ) => cookie . active && ! ! cookie . key ) ,
128
+ body : bodyContent || '' ,
129
+ bodyType,
130
+ bodyVariables : bodyVariables || '' ,
131
+ rawType,
132
+ isSSE,
133
+ network,
134
+ restUrl,
135
+ testContent : testContent || '' ,
136
+ wsUrl,
137
+ gqlUrl,
138
+ grpcUrl,
139
+ } ,
140
+ response : {
141
+ headers : null ,
142
+ events : null ,
143
+ } ,
144
+ checked : false ,
145
+ minimized : false ,
146
+ tab : currentTab ,
147
+ } ;
148
+ console . log ( reqRes ) ;
149
+ }
150
+
151
+ // add request to history
152
+ historyController . addHistoryToIndexedDb ( reqRes ) ;
153
+ reqResAdd ( reqRes ) ;
154
+ // dispatch(actions.scheduledReqResUpdate(reqRes));
155
+
156
+ //reset for next request
157
+ resetComposerFields ( ) ;
158
+ // dispatch(actions.setResponsePaneActiveTab('events'));
159
+ // dispatch(actions.setSidebarActiveTab('composer'));
160
+
161
+ connectionController . openReqRes ( reqRes . id ) ;
162
+ dispatch (
163
+ actions . saveCurrentResponseData (
164
+ reqRes ,
165
+ 'singleReqResContainercomponentSendHandler'
166
+ )
167
+ ) ;
168
+ } ;
169
+
77
170
const addNewRequest = ( ) => {
78
171
const warnings = requestValidationCheck ( ) ;
79
172
if ( Object . keys ( warnings ) . length > 0 ) {
80
173
setComposerWarningMessage ( warnings ) ;
81
174
return ;
82
175
}
83
176
84
- let reqRes ;
177
+ let reqRes ;
85
178
const protocol = url . match ( / ( h t t p s ? : \/ \/ ) | ( w s s ? : \/ \/ ) / ) [ 0 ] ;
86
179
// HTTP && GRAPHQL QUERY & MUTATION REQUESTS
87
180
if ( ! / w s s ? : \/ \/ / . test ( protocol ) && ! gRPC ) {
@@ -96,7 +189,7 @@ function RestContainer({
96
189
path = path . substring ( 0 , path . length - 1 ) ;
97
190
}
98
191
path = path . replace ( / h t t p s ? : \/ / g, 'http://' ) ;
99
- reqRes = {
192
+ reqRes = {
100
193
id : uuid ( ) ,
101
194
createdAt : new Date ( ) ,
102
195
protocol : url . match ( / h t t p s ? : \/ \/ / ) [ 0 ] ,
@@ -169,21 +262,30 @@ function RestContainer({
169
262
warningMessage = { warningMessage }
170
263
setComposerWarningMessage = { setComposerWarningMessage }
171
264
/>
172
- < HeaderEntryForm
173
- newRequestHeaders = { newRequestHeaders }
174
- newRequestStreams = { newRequestStreams }
175
- newRequestBody = { newRequestBody }
176
- newRequestFields = { newRequestFields }
177
- setNewRequestHeaders = { setNewRequestHeaders }
178
- setNewRequestStreams = { setNewRequestStreams }
179
- isDark = { isDark }
180
- />
181
- < CookieEntryForm
182
- newRequestCookies = { newRequestCookies }
183
- newRequestBody = { newRequestBody }
184
- setNewRequestCookies = { setNewRequestCookies }
185
- isDark = { isDark }
186
- />
265
+ < span className = "inputs" >
266
+ < div >
267
+ < HeaderEntryForm
268
+ newRequestHeaders = { newRequestHeaders }
269
+ newRequestStreams = { newRequestStreams }
270
+ newRequestBody = { newRequestBody }
271
+ newRequestFields = { newRequestFields }
272
+ setNewRequestHeaders = { setNewRequestHeaders }
273
+ setNewRequestStreams = { setNewRequestStreams }
274
+ isDark = { isDark }
275
+ />
276
+ < CookieEntryForm
277
+ newRequestCookies = { newRequestCookies }
278
+ newRequestBody = { newRequestBody }
279
+ setNewRequestCookies = { setNewRequestCookies }
280
+ isDark = { isDark }
281
+ />
282
+ </ div >
283
+ < div className = "is-3rem-footer is-clickable restReqBtns" >
284
+ < SendRequestButton onClick = { sendNewRequest } />
285
+ < p > --- or --- </ p >
286
+ < NewRequestButton onClick = { addNewRequest } />
287
+ </ div >
288
+ </ span >
187
289
{ /* SSE TOGGLE SWITCH */ }
188
290
< div className = "field mt-2" >
189
291
< span className = "composer-section-title mr-3" >
@@ -214,9 +316,7 @@ function RestContainer({
214
316
testContent = { testContent }
215
317
/>
216
318
</ div >
217
- < div className = "is-3rem-footer is-clickable" >
218
- < NewRequestButton onClick = { addNewRequest } />
219
- </ div >
319
+
220
320
</ div >
221
321
) ;
222
322
}
0 commit comments