17
17
* limitations under the License.
18
18
*/
19
19
20
- import xhr from 'xhr' ;
21
20
import StreamObserver from '../stream-observer' ;
22
21
import Result from '../../result' ;
23
22
import { EMPTY_CONNECTION_HOLDER } from '../connection-holder' ;
@@ -50,24 +49,26 @@ function createTransactionCommitUrl(url) {
50
49
}
51
50
52
51
function createHttpHeaders ( authToken ) {
53
- const basicAuthToken = 'Basic ' + btoa ( authToken . principal + ':' + authToken . credentials ) ;
54
- return {
55
- 'Accept' : 'application/json; charset=UTF-8' ,
56
- 'Content-Type' : 'application/json' ,
57
- 'Authorization' : basicAuthToken
58
- } ;
52
+ const headers = new Headers ( ) ;
53
+ headers . append ( 'Accept' , 'application/json; charset=UTF-8' ) ;
54
+ headers . append ( 'Content-Type' , 'application/json' ) ;
55
+ headers . append ( 'Authorization' , 'Basic ' + btoa ( authToken . principal + ':' + authToken . credentials ) ) ;
56
+ return headers ;
59
57
}
60
58
61
59
function sendPostRequest ( statement , parameters , streamObserver , transactionCommitUrl , headers , converter ) {
62
60
try {
63
- xhr . post (
64
- transactionCommitUrl ,
65
- {
66
- headers : headers ,
67
- body : createStatementJson ( statement , parameters , converter )
68
- } ,
69
- ( error , response ) => processPostResponse ( error , response , converter , streamObserver )
70
- ) ;
61
+ const options = {
62
+ method : 'POST' ,
63
+ headers : headers ,
64
+ body : createStatementJson ( statement , parameters , converter )
65
+ } ;
66
+
67
+ fetch ( transactionCommitUrl , options )
68
+ . then ( response => response . json ( ) )
69
+ . catch ( error => processResponseError ( error , converter , streamObserver ) )
70
+ . then ( responseJson => processResponseJson ( responseJson , converter , streamObserver ) ) ;
71
+
71
72
} catch ( e ) {
72
73
streamObserver . onError ( e ) ;
73
74
}
@@ -93,33 +94,36 @@ function createStatementJsonOrThrow(statement, parameters, converter) {
93
94
} ) ;
94
95
}
95
96
96
- function processPostResponse ( error , response , converter , streamObserver ) {
97
+ function processResponseError ( error , converter , streamObserver ) {
98
+ const neo4jError = converter . convertNetworkError ( error ) ;
99
+ streamObserver . onError ( neo4jError ) ;
100
+ }
101
+
102
+ function processResponseJson ( responseJson , converter , streamObserver ) {
103
+ if ( ! responseJson ) {
104
+ // request failed and there is no response
105
+ return ;
106
+ }
107
+
97
108
try {
98
- processPostResponseOrThrow ( error , response , converter , streamObserver ) ;
109
+ processResponseJsonOrThrow ( responseJson , converter , streamObserver ) ;
99
110
} catch ( e ) {
100
111
streamObserver . onError ( e ) ;
101
112
}
102
113
}
103
114
104
- function processPostResponseOrThrow ( error , response , converter , streamObserver ) {
105
- if ( error ) {
106
- const neo4jError = converter . convertNetworkError ( error ) ;
115
+ function processResponseJsonOrThrow ( responseJson , converter , streamObserver ) {
116
+ const neo4jError = converter . extractError ( responseJson ) ;
117
+ if ( neo4jError ) {
107
118
streamObserver . onError ( neo4jError ) ;
108
119
} else {
109
- const responseJson = JSON . parse ( response . body ) ;
110
-
111
- const neo4jError = converter . extractError ( responseJson ) ;
112
- if ( neo4jError ) {
113
- streamObserver . onError ( neo4jError ) ;
114
- } else {
115
- const recordMetadata = converter . extractRecordMetadata ( responseJson ) ;
116
- streamObserver . onCompleted ( recordMetadata ) ;
120
+ const recordMetadata = converter . extractRecordMetadata ( responseJson ) ;
121
+ streamObserver . onCompleted ( recordMetadata ) ;
117
122
118
- const rawRecords = converter . extractRawRecords ( responseJson ) ;
119
- rawRecords . forEach ( rawRecord => streamObserver . onNext ( rawRecord ) ) ;
123
+ const rawRecords = converter . extractRawRecords ( responseJson ) ;
124
+ rawRecords . forEach ( rawRecord => streamObserver . onNext ( rawRecord ) ) ;
120
125
121
- const statementMetadata = converter . extractStatementMetadata ( responseJson ) ;
122
- streamObserver . onCompleted ( statementMetadata ) ;
123
- }
126
+ const statementMetadata = converter . extractStatementMetadata ( responseJson ) ;
127
+ streamObserver . onCompleted ( statementMetadata ) ;
124
128
}
125
129
}
0 commit comments