1717 * limitations under the License.
1818 */
1919
20- import xhr from 'xhr' ;
2120import StreamObserver from '../stream-observer' ;
2221import Result from '../../result' ;
2322import { EMPTY_CONNECTION_HOLDER } from '../connection-holder' ;
@@ -50,24 +49,26 @@ function createTransactionCommitUrl(url) {
5049}
5150
5251function 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 ;
5957}
6058
6159function sendPostRequest ( statement , parameters , streamObserver , transactionCommitUrl , headers , converter ) {
6260 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+
7172 } catch ( e ) {
7273 streamObserver . onError ( e ) ;
7374 }
@@ -93,33 +94,36 @@ function createStatementJsonOrThrow(statement, parameters, converter) {
9394 } ) ;
9495}
9596
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+
97108 try {
98- processPostResponseOrThrow ( error , response , converter , streamObserver ) ;
109+ processResponseJsonOrThrow ( responseJson , converter , streamObserver ) ;
99110 } catch ( e ) {
100111 streamObserver . onError ( e ) ;
101112 }
102113}
103114
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 ) {
107118 streamObserver . onError ( neo4jError ) ;
108119 } 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 ) ;
117122
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 ) ) ;
120125
121- const statementMetadata = converter . extractStatementMetadata ( responseJson ) ;
122- streamObserver . onCompleted ( statementMetadata ) ;
123- }
126+ const statementMetadata = converter . extractStatementMetadata ( responseJson ) ;
127+ streamObserver . onCompleted ( statementMetadata ) ;
124128 }
125129}
0 commit comments