-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathserver.js
40 lines (32 loc) · 1.23 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
'use strict';
var WhooTS = require('./');
var http = require('http');
var url = require('url');
var PORT = 8080;
// valid requests look like:
// http://localhost:8080/tms/{z}/{x}/{y}/{layer}/{baseUrl}
// http://localhost:8080/tms/19/154308/197167/Natural2015/http://geodata.state.nj.us/imagerywms/Natural2015
function handleRequest(request, response) {
var pathname = url.parse(request.url, true).pathname;
var params = pathname.split('/');
if (params.length > 6 && params[1].toLowerCase() === 'tms') {
var z = +params[2],
x = +params[3],
y = +params[4],
layer = params[5],
baseUrl = pathname.replace(params.slice(0,6).join('/') + '/', '');
if (!isNaN(z) && !isNaN(x) && !isNaN(y) && layer && url.parse(baseUrl).protocol) {
response.writeHead(302, { 'Location': WhooTS.getURL(baseUrl, layer, x, y, z) });
response.end('Redirect');
return;
}
}
response.statusCode = '404';
response.end('Not Found');
}
var server = http.createServer(handleRequest);
server.listen(PORT, function() {
/* eslint-disable no-console */
console.log('Server listening on: http://localhost:%s', PORT);
/* eslint-enable no-console */
});