feat: Create web server
This commit is contained in:
		
							parent
							
								
									b20ba578cb
								
							
						
					
					
						commit
						2ec229b1f6
					
				
					 1 changed files with 43 additions and 21 deletions
				
			
		
							
								
								
									
										52
									
								
								index.js
									
										
									
									
									
								
							
							
						
						
									
										52
									
								
								index.js
									
										
									
									
									
								
							|  | @ -5,28 +5,50 @@ | ||||||
| var express = require('express'); | var express = require('express'); | ||||||
| var app = express(); | var app = express(); | ||||||
| 
 | 
 | ||||||
|  | const Messaging = require('./scripts/messaging').Messaging; | ||||||
|  | var TimestampAPI = require('./scripts/timestampAPI').TimestampAPI; | ||||||
|  | 
 | ||||||
|  | class WebServer { | ||||||
|  |   /* | ||||||
|  |     Initiate the web server.  | ||||||
|  | 
 | ||||||
|  |     @param {function} callback - The callback run before initiating the server | ||||||
|  |   */ | ||||||
|  |   constructor(callback) { | ||||||
|     // enable CORS (https://en.wikipedia.org/wiki/Cross-origin_resource_sharing)
 |     // enable CORS (https://en.wikipedia.org/wiki/Cross-origin_resource_sharing)
 | ||||||
|     // so that your API is remotely testable by FCC 
 |     // so that your API is remotely testable by FCC 
 | ||||||
|     var cors = require('cors'); |     var cors = require('cors'); | ||||||
|     app.use(cors({optionsSuccessStatus: 200}));  // some legacy browsers choke on 204
 |     app.use(cors({optionsSuccessStatus: 200}));  // some legacy browsers choke on 204
 | ||||||
| 
 | 
 | ||||||
| // http://expressjs.com/en/starter/static-files.html
 |     this.#setDefaults(); | ||||||
| app.use(express.static('public')); |  | ||||||
| 
 |  | ||||||
| // http://expressjs.com/en/starter/basic-routing.html
 |  | ||||||
| app.get("/", function (req, res) { |  | ||||||
|   res.sendFile(__dirname + '/views/index.html'); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| // your first API endpoint... 
 |  | ||||||
| app.get("/api/hello", function (req, res) { |  | ||||||
|   res.json({greeting: 'hello API'}); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
|      |      | ||||||
|  |     if (callback) { | ||||||
|  |       this[`activity`] = callback(); | ||||||
|  |     } | ||||||
|      |      | ||||||
|     // Listen on port set in environment variable or default to 3000
 |     // Listen on port set in environment variable or default to 3000
 | ||||||
|     var listener = app.listen(process.env.PORT || 3000, function () { |     var listener = app.listen(process.env.PORT || 3000, function () { | ||||||
|   console.log('Your app is listening on port ' + listener.address().port); |       console.log(`Active on port ${listener.address().port}.`); | ||||||
|     }); |     }); | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /* Configure the default responses for the web server. */ | ||||||
|  |   #setDefaults() { | ||||||
|  |     // http://expressjs.com/en/starter/static-files.html
 | ||||||
|  |     app.use(WebServer.paths['assets'], express.static(__dirname + WebServer.paths['assets'])); | ||||||
|  | 
 | ||||||
|  |     // http://expressjs.com/en/starter/basic-routing.html
 | ||||||
|  |     app.get("/", function (REQUEST, RESPONSE) { | ||||||
|  |       RESPONSE.sendFile(__dirname + WebServer[`paths`][`default`]); | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static paths = { | ||||||
|  |     "assets": "/public", | ||||||
|  |     "default": '/views/index.html' | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | new WebServer(() => {return (new TimestampAPI(app))}); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue