@@ -4,7 +4,7 @@ var years=JSON.parse(data);
4
4
var data2 = fs . readFileSync ( 'run_ranges.json' ) ;
5
5
var run_eras = JSON . parse ( data2 ) ;
6
6
const express = require ( "express" ) ;
7
- const url = require ( 'url' ) ;
7
+
8
8
var favicon = require ( 'serve-favicon' ) ;
9
9
var path = require ( 'path' ) ;
10
10
@@ -28,48 +28,52 @@ app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')))
28
28
app . get ( '/' , welcome ) ;
29
29
function welcome ( request , response )
30
30
{
31
+ let hostname = request . get ( 'Host' )
31
32
console . log ( request . get ( 'Host' ) ) ;
32
33
var reply = {
33
- usage : "Add a path, available paths: / years and /runeras" ,
34
- years : "use: /years/<YYYY> to get a specific year or: /years/<YYYY>/< key> for a specific value within a year " ,
35
- runeras : "use: /runeras/<RunYYYYN> to get a specific run era or: /runeras/<RunYYYYN>/< key> for a specific value within a run era " ,
36
- or : "or use: /runeras/<YYYY> to get run eras of a year or: /runeras/<YYYY>/<key> to get specific values for run eras within a year " ,
37
- queries : "for runeras, pass a query with: / runeras?<akey>=<avalue> or after <YYYY> and <key> paths "
34
+ usage : "Add a path, available paths: http://" + hostname + "/ years and http://" + hostname + " /runeras",
35
+ years : "use: /years/ to get all year infor or: /years/<key> for a specific value" ,
36
+ runeras : "use: /runeras/ to get all run era info or: /runeras/<key> for a specific value" ,
37
+ queries : "Pass a query with: ?<akey>=<avalue> " ,
38
+ example : "http://" + hostname + "/ runeras/run_era?year=2015 "
38
39
}
39
40
response . send ( reply ) ;
40
41
}
41
42
42
43
43
- app . get ( '/years/:year?/: mykey?' , searchYear ) ;
44
+ app . get ( '/years/:mykey?' , searchYear ) ;
44
45
function searchYear ( request , response )
45
46
{
46
- var year = request . params . year ;
47
47
var key = request . params . mykey ;
48
+ var filters = request . query ;
49
+ var filtered_years = years ;
50
+
51
+ for ( var reqkey in filters ) {
52
+ filtered_years = filtered_years . filter ( a_year => a_year [ reqkey ] == filters [ reqkey ] ) ;
53
+ }
54
+
48
55
var reply ;
49
56
50
- if ( years [ year ] )
57
+ if ( key )
51
58
{
52
- if ( key )
53
- {
54
- reply = String ( years [ year ] [ key ] ) ;
55
- }
56
- else
57
- {
58
- reply = years [ year ] ;
59
- }
59
+ // note that year.key won't work
60
+ let keyvalues = filtered_years . map ( year => year [ key ] ) ;
61
+ reply = keyvalues ;
60
62
}
61
63
else
62
64
{
63
- reply = years ;
65
+ reply = filtered_years ;
64
66
}
67
+
65
68
console . log ( reply ) ;
69
+ if ( reply . length == 1 ) reply = String ( reply [ 0 ] ) ;
70
+
66
71
response . send ( reply ) ;
67
72
}
68
73
69
- app . get ( '/runeras/:era?/: mykey?' , searchEra ) ;
74
+ app . get ( '/runeras/:mykey?' , searchEra ) ;
70
75
function searchEra ( request , response )
71
76
{
72
- var era = request . params . era ;
73
77
var key = request . params . mykey ;
74
78
var filters = request . query ;
75
79
var filtered_eras = run_eras ;
@@ -80,30 +84,11 @@ function searchEra(request,response)
80
84
81
85
var reply ;
82
86
83
- if ( era )
87
+ if ( key )
84
88
{
85
- if ( era . includes ( "Run" ) )
86
- {
87
- const this_era = filtered_eras . filter ( an_era => an_era . run_era == era ) ;
88
- reply = this_era [ 0 ] ;
89
- if ( key )
90
- {
91
- reply = String ( this_era [ 0 ] [ key ] ) ;
92
- }
93
- }
94
- else
95
- {
96
- console . log ( "No 'Run' in era, consider it as year" ) ;
97
- var year = era ;
98
- const these_eras = filtered_eras . filter ( an_era => an_era . year == year ) ;
99
- reply = these_eras ;
100
- if ( key )
101
- {
102
- // note that era.key won't work
103
- let keyvalues = these_eras . map ( era => era [ key ] ) ;
104
- reply = keyvalues ;
105
- }
106
- }
89
+ // note that era.key won't work
90
+ let keyvalues = filtered_eras . map ( era => era [ key ] ) ;
91
+ reply = keyvalues ;
107
92
}
108
93
else
109
94
{
0 commit comments