Skip to content

Commit 703004c

Browse files
save file
1 parent 0e6e14b commit 703004c

File tree

1 file changed

+25
-8
lines changed
  • blog/26-02-05/request-url-to-absolute-filename/ex

1 file changed

+25
-8
lines changed

blog/26-02-05/request-url-to-absolute-filename/ex/resolve.js

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11

22
/*
33
requires
4-
path
4+
path,fs
55
*/
66

77
resolve.df = false;
88

9-
function resolve(url,docroot='.'){
9+
async function resolve(url,docroot='.'){
1010
resolve.df && console.log('=== resolve v2.0 ===');
1111
resolve.df && console.log('url :',url);
1212
resolve.df && console.log('docroot :',docroot);
@@ -23,7 +23,8 @@
2323
}//catch
2424
if(err){
2525
resolve.df && console.error(err);
26-
return false;
26+
var error = 'invalid url';
27+
return {error};
2728
}
2829

2930
url = url.slice(1);
@@ -32,18 +33,34 @@
3233
root += path.sep;
3334
resolve.df && console.log('root :',root);
3435
var abs = path.resolve(docroot,url);
36+
var err;
37+
try{
38+
39+
var stat = await fs.promises.stat(abs);
40+
41+
}//try
42+
catch(err2){
43+
44+
err = err2;
45+
46+
}//catch
47+
if(err){
48+
var error = err.toString();
49+
return {error}
50+
}
51+
if(stat.isDirectory()){
52+
abs += path.sep;
53+
}
3554
resolve.df && console.log('abs :',abs);
3655

3756
if(!abs.startsWith(root)){
3857
resolve.df && console.log('fail');
39-
return false;
58+
var error = 'resolve';
59+
return {error};
4060
}
4161

42-
if(url.endsWith('/')){
43-
abs += '/';
44-
}
4562
resolve.df && console.log('ok',abs);
46-
return abs;
63+
return {abs};
4764

4865
}//resolve
4966

0 commit comments

Comments
 (0)