Add simple preview interface
This commit is contained in:
		
							parent
							
								
									6cbefae12d
								
							
						
					
					
						commit
						3334abb9d8
					
				
							
								
								
									
										43
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								index.js
									
									
									
									
									
								
							| @ -44,6 +44,49 @@ function attach(docker_id, output_stream) { | ||||
| } | ||||
| 
 | ||||
| router.get("/", async (ctx) => { | ||||
|   ctx.body = /* HTML */ `<!DOCTYPE html>
 | ||||
|     <html> | ||||
|       <body> | ||||
|         <form onsubmit="formSubmit(event)"> | ||||
|           <label for="url_input">URL:</label> | ||||
|           <input type="text" name="url" id="url_input" /> | ||||
|           <br /> | ||||
|           <label for="domains">Domeny (oddzielone przecinkami):</label> | ||||
|           <input | ||||
|             type="text" | ||||
|             name="domains" | ||||
|             id="domains" | ||||
|             value="doubleclick.net,facebook.com" | ||||
|           /> | ||||
|           <br /> | ||||
|           <input type="submit" /> | ||||
|         </form> | ||||
|         <code><pre id="output"></pre></code> | ||||
|       </body> | ||||
|       <script> | ||||
|         async function sleep(time) { | ||||
|           return new Promise((resolve) => setTimeout(resolve, time)); | ||||
|         } | ||||
|         async function formSubmit(e) { | ||||
|           e.preventDefault(); | ||||
|           let response = { status: "sending first request..." }; | ||||
|           const url = \`/api/requests?url=\${url_input.value}&\${domains.value
 | ||||
|             .split(",") | ||||
|             .map((d) => "domains[]=" + d) | ||||
|             .join("&")}\`;
 | ||||
|           const { id } = await (await fetch(url, { method: "post" })).json(); | ||||
|           do { | ||||
|             response = await (await fetch(\`/api/requests/\${id}\`)).json();
 | ||||
|             console.log(response); | ||||
|             output.innerHTML = JSON.stringify(response, null, "   "); | ||||
|             await sleep(1000); | ||||
|           } while (response.status !== "finished"); | ||||
|         } | ||||
|       </script> | ||||
|     </html>`; | ||||
| }); | ||||
| 
 | ||||
| router.get("/preview", async (ctx) => { | ||||
|   const s = new Readable({ read() {} }); | ||||
|   // stream data
 | ||||
|   ctx.response.set("content-type", "txt/html"); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user