@@ -17,61 +17,83 @@ export default function (server) {
1717 }
1818 } ) ;
1919 } catch ( err ) {
20- console . log ( err ) ;
21- //swallow errors. We don 't care if there is no update.
20+ console . log ( 'Error updating url metadata' , err ) ;
21+ //swallow errors. It isn 't critical if there is no update.
2222 }
2323 }
2424
25- return {
26- async generateUrlId ( url ) {
27- const urlId = await new Promise ( ( resolve , reject ) => {
28- const client = server . plugins . elasticsearch . client ;
25+ async function getUrlDoc ( urlId ) {
26+ const urlDoc = await new Promise ( ( resolve , reject ) => {
27+ const client = server . plugins . elasticsearch . client ;
2928
30- // const urlId = crypto.createHash('md5')
31- // .update(url)
32- // .digest('hex');
29+ client . get ( {
30+ index : '.kibana' ,
31+ type : 'url' ,
32+ id : urlId
33+ } )
34+ . then ( response => {
35+ resolve ( response ) ;
36+ } )
37+ . catch ( err => {
38+ resolve ( ) ;
39+ } ) ;
40+ } ) ;
3341
34- client . index ( {
35- index : '.kibana' ,
36- type : 'url' ,
37- body : {
38- url,
39- 'access-count' : 0 ,
40- 'create-date' : new Date ( ) ,
41- 'access-date' : new Date ( )
42- }
43- } )
44- . then ( response => {
45- const urlId = response . _id ;
46- resolve ( urlId ) ;
47- } )
48- . catch ( err => {
49- reject ( err ) ;
50- } ) ;
42+ return urlDoc ;
43+ }
44+
45+ async function createUrlDoc ( url , urlId ) {
46+ const newUrlId = await new Promise ( ( resolve , reject ) => {
47+ const client = server . plugins . elasticsearch . client ;
48+
49+ client . index ( {
50+ index : '.kibana' ,
51+ type : 'url' ,
52+ id : urlId ,
53+ body : {
54+ url,
55+ 'access-count' : 0 ,
56+ 'create-date' : new Date ( ) ,
57+ 'access-date' : new Date ( )
58+ }
59+ } )
60+ . then ( response => {
61+ resolve ( response . _id ) ;
62+ } )
63+ . catch ( err => {
64+ reject ( err ) ;
5165 } ) ;
66+ } ) ;
67+
68+ return newUrlId ;
69+ }
70+
71+ function createUrlId ( url ) {
72+ const urlId = crypto . createHash ( 'md5' )
73+ . update ( url )
74+ . digest ( 'hex' ) ;
75+
76+ return urlId ;
77+ }
5278
53- return urlId ;
79+ return {
80+ async generateUrlId ( url ) {
81+ const urlId = createUrlId ( url ) ;
82+
83+ const urlDoc = await getUrlDoc ( urlId ) ;
84+ if ( urlDoc ) return urlId ;
85+
86+ return createUrlDoc ( url , urlId ) ;
5487 } ,
5588 async getUrl ( urlId ) {
56- const url = await new Promise ( ( resolve , reject ) => {
57- const client = server . plugins . elasticsearch . client ;
58-
59- client . get ( {
60- index : '.kibana' ,
61- type : 'url' ,
62- id : urlId
63- } )
64- . then ( response => {
65- const url = response . _source . url ;
66- updateMetadata ( urlId , response ) ;
67- resolve ( url ) ;
68- } )
69- . catch ( err => {
70- resolve ( '/' ) ;
71- } ) ;
72- } ) ;
89+ try {
90+ const urlDoc = await getUrlDoc ( urlId ) ;
91+ updateMetadata ( urlId , urlDoc ) ;
7392
74- return url ;
93+ return urlDoc . _source . url ;
94+ } catch ( err ) {
95+ return '/' ;
96+ }
7597 }
7698 } ;
7799} ;
0 commit comments