Skip to content

Commit a84afc2

Browse files
authored
Merge pull request #248 from pe4cey/fix-connecting-with-bolt
Merge pull request #197 from eve-bright/fixes-for-bolt-issues
2 parents 629d2bb + 6b10b0b commit a84afc2

File tree

2 files changed

+20
-43
lines changed

2 files changed

+20
-43
lines changed

app/scripts/services/Bolt.coffee

Lines changed: 11 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -46,49 +46,30 @@ angular.module('neo4jApp.services')
4646
driver = bolt.driver("bolt://" + host, bolt.auth.basic(username, password), {encrypted: encrypted})
4747
driver
4848

49-
testQuery = (driver) ->
49+
testConnection = (withoutCredentials = no) ->
5050
q = $q.defer()
51+
driver = getDriverObj withoutCredentials
5152
driver.onError = (e) ->
5253
if e instanceof Event and e.type is 'error'
5354
q.reject getSocketErrorObj()
5455
else if e.code and e.message # until Neo4jError is in drivers public API
5556
q.reject buildErrorObj(e.code, e.message)
56-
session = driver.session()
57-
p = session.run("CALL db.labels")
58-
p.then((r) ->
59-
session.close()
60-
q.resolve r
61-
).catch((e)->
62-
session.close()
63-
q.reject e
64-
)
57+
else if e.fields && e.fields[0]
58+
q.reject e
59+
driver.onCompleted = (m) ->
60+
q.resolve m
61+
driver.session()
6562
q.promise
6663

67-
testConnection = (withoutCredentials = no) ->
64+
connect = (withoutCredentials = no) ->
6865
q = $q.defer()
69-
driver = getDriverObj withoutCredentials
70-
testQuery(driver).then((r) ->
66+
testConnection(withoutCredentials).then((r) ->
67+
_driver = getDriverObj withoutCredentials
7168
q.resolve r
72-
_errorStatus = null
73-
driver.close()
74-
).catch((e) ->
75-
q.reject e
76-
_errorStatus = e
77-
driver.close()
69+
,(e) -> q.reject e
7870
)
7971
q.promise
8072

81-
connect = (withoutCredentials = no) ->
82-
q = $q.defer()
83-
_driver = getDriverObj withoutCredentials
84-
testQuery(_driver)
85-
.then((r) -> q.resolve r)
86-
.catch((e) ->
87-
_driver = null unless e.fields[0].code is 'Neo.ClientError.Security.CredentialsExpired'
88-
q.reject e
89-
)
90-
q.promise
91-
9273
clearConnection = ->
9374
_driver.close() if _driver?
9475
_driver = null
@@ -130,14 +111,12 @@ angular.module('neo4jApp.services')
130111
session.close()
131112
q.resolve r
132113
).catch((txe) ->
133-
session.close()
134114
q.reject txe
135115
)
136116
else
137117
session.close()
138118
q.resolve r
139119
).catch((e) ->
140-
session.close()
141120
q.reject e
142121
)
143122
else
@@ -146,7 +125,6 @@ angular.module('neo4jApp.services')
146125
session.close()
147126
q.resolve r
148127
).catch((e) ->
149-
session.close()
150128
q.reject e
151129
)
152130
{tx: tx, promise: q.promise, session: session}

app/scripts/services/UtilityBolt.coffee

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,27 +87,26 @@ angular.module('neo4jApp.services')
8787
q = $q.defer()
8888
r = Bolt.testConnection withoutCredentials
8989
r.then((r) ->
90-
res = Bolt.constructResult r
9190
Bolt.connect() if retainConnection
92-
if not res.data.errors.length
91+
if (r.credentials_expired)
92+
errObj = {data: {}}
93+
errObj.data.password_change = 'true'
94+
errObj.status = 403
95+
q.reject errObj
96+
else
9397
$rootScope.bolt_connection_failure = no
9498
return q.resolve({})
95-
else
96-
return q.reject({status: 401, data: res})
97-
).catch((err) ->
99+
,(err) ->
98100
errObj = Bolt.constructResult err
99-
if errObj.data.errors[0].code is 'Neo.ClientError.Security.CredentialsExpired'
100-
errObj.data.password_change = 'true'
101-
errObj.status = 403
102-
Bolt.connect() if retainConnection
103-
else if errObj.data.errors[0].code is 'Socket.Error' || errObj.data.errors[0].message.indexOf('WebSocket connection failure') == 0
101+
if errObj.data.errors[0].code is 'Socket.Error' || errObj.data.errors[0].message.indexOf('WebSocket connection failure') == 0
104102
errObj.status = 0
105103
$rootScope.bolt_connection_failure = yes
106104
else
107105
errObj.status = 401
108106
q.reject errObj
109107
)
110108
q.promise
109+
111110
setNewPassword: (username, newPasswd) ->
112111
q = $q.defer()
113112
Bolt.boltTransaction("CALL dbms.changePassword({password})", {password: newPasswd}).promise

0 commit comments

Comments
 (0)