forked from sheetjs/sheetjs
		
	
		
			
	
	
		
			75 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								// @deno-types="https://cdn.sheetjs.com/xlsx-latest/package/types/index.d.ts"
							 | 
						||
| 
								 | 
							
								import { utils, set_cptable, version } from 'https://cdn.sheetjs.com/xlsx-latest/package/xlsx.mjs';
							 | 
						||
| 
								 | 
							
								import { parse_book_from_request } from "./mod.ts";
							 | 
						||
| 
								 | 
							
								import * as Drash from "https://deno.land/x/drash@v2.5.4/mod.ts";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class S2CResource extends Drash.Resource {
							 | 
						||
| 
								 | 
							
								  public paths = ["/"];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // see https://github.com/drashland/drash/issues/194
							 | 
						||
| 
								 | 
							
								  public OPTIONS(request: Drash.Request, response: Drash.Response) {
							 | 
						||
| 
								 | 
							
								    const allHttpMethods: string[] = [ "GET", "POST", "PUT", "DELETE" ];
							 | 
						||
| 
								 | 
							
								    response.headers.set("Allow", allHttpMethods.join()); // Use this
							 | 
						||
| 
								 | 
							
								    response.headers.set("Access-Control-Allow-Methods", allHttpMethods.join()); // or this
							 | 
						||
| 
								 | 
							
								    response.headers.set("access-control-allow-origin", "*");
							 | 
						||
| 
								 | 
							
								    response.status_code = 204;
							 | 
						||
| 
								 | 
							
								    return response;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  public POST(request: Drash.Request, response: Drash.Response) {
							 | 
						||
| 
								 | 
							
								    try { response.headers.set("access-control-allow-origin", "*"); } catch(e) {}
							 | 
						||
| 
								 | 
							
								    var wb = parse_book_from_request(request, "file");
							 | 
						||
| 
								 | 
							
								    return response.html( utils.sheet_to_html(wb.Sheets[wb.SheetNames[0]]));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  public GET(request: Drash.Request, response: Drash.Response): void {
							 | 
						||
| 
								 | 
							
								    try { response.headers.set("access-control-allow-origin", "*"); } catch(e) {}
							 | 
						||
| 
								 | 
							
								    return response.html(`\
							 | 
						||
| 
								 | 
							
								<!DOCTYPE html>
							 | 
						||
| 
								 | 
							
								<html>
							 | 
						||
| 
								 | 
							
								  <head>
							 | 
						||
| 
								 | 
							
								    <title>SheetJS Spreadsheet to HTML Conversion Service</title>
							 | 
						||
| 
								 | 
							
								    <meta charset="utf-8" />
							 | 
						||
| 
								 | 
							
								  </head>
							 | 
						||
| 
								 | 
							
								  <body>
							 | 
						||
| 
								 | 
							
								<pre><h3><a href="//sheetjs.com/">SheetJS</a> Spreadsheet Conversion Service</h3>
							 | 
						||
| 
								 | 
							
								<b>API</b>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Send a POST request to https://s2c.deno.dev/ with the file in the "file" body parameter:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$ curl -X POST -F"file=@test.xlsx" https://s2c.deno.dev/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The response will be an HTML TABLE generated from the first worksheet.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<b>Try it out!</b><form action="/" method="post" enctype="multipart/form-data">
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<input type="file" name="file" />
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Use the file input element to select a file, then click "Submit"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<button type="submit">Submit</button>
							 | 
						||
| 
								 | 
							
								</form>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Library Version: ${version}
							 | 
						||
| 
								 | 
							
								</pre>
							 | 
						||
| 
								 | 
							
								  </body>
							 | 
						||
| 
								 | 
							
								</html>`,
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Create and run your server
							 | 
						||
| 
								 | 
							
								const server = new Drash.Server({
							 | 
						||
| 
								 | 
							
								  hostname: "",
							 | 
						||
| 
								 | 
							
								  port: 3000,
							 | 
						||
| 
								 | 
							
								  protocol: "http",
							 | 
						||
| 
								 | 
							
								  resources: [
							 | 
						||
| 
								 | 
							
								    S2CResource,
							 | 
						||
| 
								 | 
							
								  ],
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								server.run();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								console.log(`Server running at ${server.address}.`);
							 | 
						||
| 
								 | 
							
								
							 |