Initial commit from Gomix.
This commit is contained in:
		
							parent
							
								
									92a485ced6
								
							
						
					
					
						commit
						8123554e2d
					
				
					 7 changed files with 234 additions and 2 deletions
				
			
		
							
								
								
									
										2
									
								
								.gitconfig
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.gitconfig
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | ||||||
|  | [core] | ||||||
|  | 	excludesfile = /etc/.gitignore-global | ||||||
							
								
								
									
										51
									
								
								.hyperdev-assets
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								.hyperdev-assets
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,51 @@ | ||||||
|  | {"name":"drag-in-files-copy.svg","date":"2016-03-16T18:27:31.021Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files-copy.svg","type":"image/svg+xml","size":6229,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files-copy.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"tkviVwlaQ2RryM4r"} | ||||||
|  | {"name":"drag-in-files.svg","date":"2016-03-16T18:21:25.984Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":7990,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"Pr0LH5dpGcRJ2QSU"} | ||||||
|  | {"name":"click-for-details.svg","date":"2016-03-16T18:21:23.511Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":6408,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"nuMndaSEzn2KoNFG"} | ||||||
|  | {"name":"use-url.svg","date":"2016-03-16T18:21:20.130Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","type":"image/svg+xml","size":6155,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(44,180,188)","uuid":"LiyD5Lxg8FrmZlhz"} | ||||||
|  | {"name":"click-for-details.svg","date":"2016-03-16T18:20:57.943Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":6408,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"04MB8gA2GPoSJ7pp"} | ||||||
|  | {"name":"drag-in-files.svg","date":"2016-03-16T18:20:56.379Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":7990,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"q8Au1vYvVFpuGd5b"} | ||||||
|  | {"name":"use-url.svg","date":"2016-03-16T18:20:52.651Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","type":"image/svg+xml","size":6155,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(44,180,188)","uuid":"9FiKvjvvr4C3oG0i"} | ||||||
|  | {"name":"1.svg","date":"2016-03-16T18:18:11.204Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2F1.svg","type":"image/svg+xml","size":20524,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2F1.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"MR02bReHwXODf2iH"} | ||||||
|  | {"name":"2.svg","date":"2016-03-16T18:18:09.776Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2F2.svg","type":"image/svg+xml","size":6597,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2F2.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"Q5gjW3biIe5ubDSw"} | ||||||
|  | {"name":"3.svg","date":"2016-03-16T18:18:08.145Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2F3.svg","type":"image/svg+xml","size":6856,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2F3.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(44,180,188)","uuid":"ZtH2QDmOOe11lCXh"} | ||||||
|  | {"name":"drag-in-files.svg","date":"2016-03-16T18:15:33.737Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":7990,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"5ZhCFJBZeljgrOsm"} | ||||||
|  | {"name":"click-for-details.svg","date":"2016-03-16T18:15:31.732Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":6408,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"j9DYGSrBdfoh5Qgf"} | ||||||
|  | {"name":"drag-in-files.svg","date":"2016-03-16T18:13:11.062Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":7990,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"xs11lHNV40rcZiOr"} | ||||||
|  | {"name":"click-for-details.svg","date":"2016-03-16T18:13:07.869Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":6397,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"oDrtrMLQDzHj3fCi"} | ||||||
|  | {"name":"drag-in-files.svg","date":"2016-03-16T18:12:09.577Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":7990,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"QZQEhdAJwQlN15xh"} | ||||||
|  | {"name":"click-for-details.svg","date":"2016-03-16T18:12:06.958Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":6395,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"4DsIsyOkpGM5vhnm"} | ||||||
|  | {"name":"use-url.svg","date":"2016-03-16T18:12:02.187Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","type":"image/svg+xml","size":6155,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(44,180,188)","uuid":"2D0DVLCP7wUxzaXm"} | ||||||
|  | {"name":"click-for-details.svg","date":"2016-03-16T18:11:49.564Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":6395,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"ellCYXezSjscGSrr"} | ||||||
|  | {"name":"drag-in-files.svg","date":"2016-03-16T18:11:44.256Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":7990,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"96WPtGmfDbGjk1Cq"} | ||||||
|  | {"name":"drag-in-files.svg","date":"2016-03-16T18:11:25.392Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":7990,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"w2iCDrwXU3boaMb0"} | ||||||
|  | {"uuid":"w2iCDrwXU3boaMb0","deleted":true} | ||||||
|  | {"uuid":"ellCYXezSjscGSrr","deleted":true} | ||||||
|  | {"uuid":"96WPtGmfDbGjk1Cq","deleted":true} | ||||||
|  | {"uuid":"4DsIsyOkpGM5vhnm","deleted":true} | ||||||
|  | {"uuid":"QZQEhdAJwQlN15xh","deleted":true} | ||||||
|  | {"uuid":"oDrtrMLQDzHj3fCi","deleted":true} | ||||||
|  | {"uuid":"xs11lHNV40rcZiOr","deleted":true} | ||||||
|  | {"uuid":"5ZhCFJBZeljgrOsm","deleted":true} | ||||||
|  | {"uuid":"j9DYGSrBdfoh5Qgf","deleted":true} | ||||||
|  | {"uuid":"2D0DVLCP7wUxzaXm","deleted":true} | ||||||
|  | {"uuid":"04MB8gA2GPoSJ7pp","deleted":true} | ||||||
|  | {"uuid":"q8Au1vYvVFpuGd5b","deleted":true} | ||||||
|  | {"uuid":"MR02bReHwXODf2iH","deleted":true} | ||||||
|  | {"uuid":"9FiKvjvvr4C3oG0i","deleted":true} | ||||||
|  | {"uuid":"ZtH2QDmOOe11lCXh","deleted":true} | ||||||
|  | {"uuid":"Q5gjW3biIe5ubDSw","deleted":true} | ||||||
|  | {"uuid":"Pr0LH5dpGcRJ2QSU","deleted":true} | ||||||
|  | {"uuid":"tkviVwlaQ2RryM4r","deleted":true} | ||||||
|  | {"uuid":"LiyD5Lxg8FrmZlhz","deleted":true} | ||||||
|  | {"uuid":"nuMndaSEzn2KoNFG","deleted":true} | ||||||
|  | {"name":"use-url.svg","date":"2016-03-29T18:22:42.337Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","type":"image/svg+xml","size":12848,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(44,180,188)","uuid":"BPzdWy4z8l1Yn4EQ"} | ||||||
|  | {"name":"drag-in-files.svg","date":"2016-03-29T18:22:44.084Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":14823,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"VQVhKMzbgQcBopQk"} | ||||||
|  | {"uuid":"BPzdWy4z8l1Yn4EQ","deleted":true} | ||||||
|  | {"uuid":"VQVhKMzbgQcBopQk","deleted":true} | ||||||
|  | {"name":"click-for-details.svg","date":"2016-03-29T18:22:55.141Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":12623,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"QTRGE6XDqUiSoYO9"} | ||||||
|  | {"name":"drag-in-files.svg","date":"2016-03-29T18:22:57.596Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":14823,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"RS7rnVaX9eGP4Lri"} | ||||||
|  | {"uuid":"RS7rnVaX9eGP4Lri","deleted":true} | ||||||
|  | {"uuid":"QTRGE6XDqUiSoYO9","deleted":true} | ||||||
|  | {"name":"drag-in-files.svg","date":"2016-03-29T18:23:08.746Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":14823,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"fxoJRXwNdZeThuNz"} | ||||||
|  | {"name":"click-for-details.svg","date":"2016-03-29T18:23:10.422Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":12623,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"Lp2si7Cpft2ktNM4"} | ||||||
|  | {"name":"use-url.svg","date":"2016-03-29T18:23:12.439Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","type":"image/svg+xml","size":12848,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(44,180,188)","uuid":"EjI8Y9wdZ9DEXI17"} | ||||||
							
								
								
									
										21
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										21
									
								
								README.md
									
										
									
									
									
								
							|  | @ -1,2 +1,19 @@ | ||||||
| # boilerplate-project-timestamp | 
 | ||||||
| A boilerplate for a freeCodeCamp project. | # API Project: Timestamp Microservice for FCC | ||||||
|  | 
 | ||||||
|  | ### User stories : | ||||||
|  | 
 | ||||||
|  | 1. The API endpoint is `GET [project_url]/api/timestamp/:date_string?` | ||||||
|  | 2. A date string is valid if can be successfully parsed by `new Date(date_string)` (JS) . Note that the unix timestamp needs to be an **integer** (not a string) specifying **milliseconds**. In our test we will use date strings compliant with ISO-8601 (e.g. `"2016-11-20"`) because this will ensure an UTC timestamp. | ||||||
|  | 3. If the date string is **empty** it should be equivalent to trigger `new Date()`, i.e. the service uses the current timestamp. | ||||||
|  | 4. If the date string is **valid** the api returns a JSON having the structure  | ||||||
|  | `{"unix": <date.getTime()>, "utc" : <date.toUTCString()> }` | ||||||
|  | e.g. `{"unix": 1479663089000 ,"utc": "Sun, 20 Nov 2016 17:31:29 GMT"}`. | ||||||
|  | 5. If the date string is **invalid** the api returns a JSON having the structure `{"unix": null, "utc" : "Invalid Date" }`. It is what you get from the date manipulation functions used above. | ||||||
|  | 
 | ||||||
|  | #### Example usage: | ||||||
|  | * https://curse-arrow.hyperdev.space/api/timestamp/2015-12-15 | ||||||
|  | * https://curse-arrow.hyperdev.space/api/timestamp/1450137600000 | ||||||
|  | 
 | ||||||
|  | #### Example output: | ||||||
|  | * { "unix": 1450137600, "natural": "December 15, 2015" } | ||||||
|  |  | ||||||
							
								
								
									
										27
									
								
								package.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								package.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | ||||||
|  | { | ||||||
|  | 	"name": "fcc-api-projects-boilerplate", | ||||||
|  | 	"version": "0.0.1", | ||||||
|  | 	"description": "An FCC Backend Challenge", | ||||||
|  | 	"main": "server.js", | ||||||
|  | 	"scripts": { | ||||||
|  | 		"start": "node server.js" | ||||||
|  | 	}, | ||||||
|  | 	"dependencies": { | ||||||
|  | 		"express": "^4.12.4", | ||||||
|  | 		"cors": "^2.8.0" | ||||||
|  | 	}, | ||||||
|  | 	"engines": { | ||||||
|  | 		"node": "4.4.5" | ||||||
|  | 	}, | ||||||
|  | 	"repository": { | ||||||
|  | 		"type": "git", | ||||||
|  | 		"url": "https://githost.com/camper/repo.git" | ||||||
|  | 	}, | ||||||
|  | 	"keywords": [ | ||||||
|  | 		"node", | ||||||
|  | 		"hyperdev", | ||||||
|  | 		"express", | ||||||
|  | 		"freecodecamp" | ||||||
|  | 	], | ||||||
|  | 	"license": "MIT" | ||||||
|  | } | ||||||
							
								
								
									
										53
									
								
								public/style.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								public/style.css
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,53 @@ | ||||||
|  | /****** Main Styling ******/ | ||||||
|  | 
 | ||||||
|  | body { | ||||||
|  | 	font-family: 'Roboto', sans-serif; | ||||||
|  | 	font-size: 16px; | ||||||
|  | 	color: #222; | ||||||
|  | 	background-color: #FaFaFa; | ||||||
|  | 	text-align: center; | ||||||
|  | 	line-height: 1.4em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .container { | ||||||
|  | 	padding: 0; | ||||||
|  | 	margin-top: 40px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | h3 { | ||||||
|  |   margin-top: 30px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .footer { | ||||||
|  | 	margin-top: 40px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .user-stories { | ||||||
|  |   position: relative; | ||||||
|  |   text-align: justify; | ||||||
|  |   max-width: 700px; | ||||||
|  |   margin: 15px auto; | ||||||
|  | } | ||||||
|  | code { | ||||||
|  |   font-family: monospace; | ||||||
|  |   padding: 2px; | ||||||
|  |   color: black; | ||||||
|  |   background-color: #fff; | ||||||
|  | } | ||||||
|  | ol { | ||||||
|  | 	list-style-position: outside; | ||||||
|  | } | ||||||
|  | ul { | ||||||
|  | 	list-style-type: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | li { | ||||||
|  |   margin-bottom: 0.5em; | ||||||
|  | } | ||||||
|  | .user-stories li { | ||||||
|  |   margin-bottom: 1em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | a { | ||||||
|  | 	color: #2574A9; | ||||||
|  | } | ||||||
							
								
								
									
										32
									
								
								server.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								server.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,32 @@ | ||||||
|  | // server.js
 | ||||||
|  | // where your node app starts
 | ||||||
|  | 
 | ||||||
|  | // init project
 | ||||||
|  | var express = require('express'); | ||||||
|  | var app = express(); | ||||||
|  | 
 | ||||||
|  | // enable CORS (https://en.wikipedia.org/wiki/Cross-origin_resource_sharing)
 | ||||||
|  | // so that your API is remotely testable by FCC 
 | ||||||
|  | var cors = require('cors'); | ||||||
|  | app.use(cors({optionSuccessStatus: 200}));  // some legacy browsers choke on 204
 | ||||||
|  | 
 | ||||||
|  | // http://expressjs.com/en/starter/static-files.html
 | ||||||
|  | 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'}); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // listen for requests :)
 | ||||||
|  | var listener = app.listen(process.env.PORT, function () { | ||||||
|  |   console.log('Your app is listening on port ' + listener.address().port); | ||||||
|  | }); | ||||||
							
								
								
									
										50
									
								
								views/index.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								views/index.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,50 @@ | ||||||
|  | <!DOCTYPE html> | ||||||
|  | 
 | ||||||
|  | <html> | ||||||
|  | 
 | ||||||
|  |    <head> | ||||||
|  |       <title>Timestamp Microservice</title> | ||||||
|  |       <link rel="shortcut icon" href="https://cdn.hyperdev.com/us-east-1%3A52a203ff-088b-420f-81be-45bf559d01b1%2Ffavicon.ico" type="image/x-icon"/> | ||||||
|  |       <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet" type="text/css"> | ||||||
|  |       <link href="style.css" rel="stylesheet" type="text/css"> | ||||||
|  |    </head> | ||||||
|  | 
 | ||||||
|  |    <body> | ||||||
|  | 
 | ||||||
|  |       <div class="container"> | ||||||
|  |         <h2>API Project: Timestamp Microservice</h2> | ||||||
|  |         <h3>User Stories :</h3> | ||||||
|  |         <ol class="user-stories"> | ||||||
|  |            | ||||||
|  |           <li>The API endpoint is <code>GET [project_url]/api/timestamp/:date_string?</code></li> | ||||||
|  |           <li>A date string is valid if can be successfully parsed by <code>new Date(date_string)</code>.<br> | ||||||
|  |           Note that the unix timestamp needs to be an <strong>integer</strong> (not a string) specifying <strong>milliseconds</strong>.<br>  | ||||||
|  |           In our test we will use date strings compliant with ISO-8601 (e.g. <code>"2016-11-20"</code>) because this will ensure an UTC timestamp.</li> | ||||||
|  |           <li>If the date string is <strong>empty</strong> it should be equivalent to trigger <code>new Date()</code>, i.e. the service uses the current timestamp.</li> | ||||||
|  |           <li>If the date string is <strong>valid</strong> the api returns a JSON having the structure<br><code>{"unix": <date.getTime()>, "utc" : <date.toUTCString()> }</code><br> | ||||||
|  |             e.g. <code>{"unix": 1479663089000 ,"utc": "Sun, 20 Nov 2016 17:31:29 GMT"}</code></li> | ||||||
|  |           <li>If the date string is <strong>invalid</strong> the api returns a JSON having the structure <br> | ||||||
|  |               <code>{"unix": null, "utc" : "Invalid Date" }</code>. It is what you get from the date manipulation functions used above. | ||||||
|  |           </li> | ||||||
|  |         </ol> | ||||||
|  | 
 | ||||||
|  |         <h3>Example Usage:</h3> | ||||||
|  |         <ul> | ||||||
|  |           <li> | ||||||
|  |             <code>GET [project url]/api/timestamp/2015-12-25</code></li> | ||||||
|  |           <li><code>GET project url]/api/timestamp/1450137600</code></li> | ||||||
|  |         </ul> | ||||||
|  | 
 | ||||||
|  |         <h3>Example Output:</h3> | ||||||
|  |         <p> | ||||||
|  |           <code>{"unix":1451001600000, "utc":"Fri, 25 Dec 2015 00:00:00 GMT"}</code> | ||||||
|  |         </p> | ||||||
|  |       </div> | ||||||
|  |       <div class="footer"> | ||||||
|  |         <p> | ||||||
|  |           by <a href="http://www.freecodecamp.com/">freeCodeCamp</a> | <a href="https://hyperdev.com/#!/remix/FCC_API_timestamp_bplate/8338be2-a353-4892-8a0d-6295e4f12eb5">Click here to Remix</a> | ||||||
|  |         </p> | ||||||
|  |       </div> | ||||||
|  |    </body> | ||||||
|  | 
 | ||||||
|  | </html> | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue