initial commit
This commit is contained in:
		
							
								
								
									
										3
									
								
								go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								go.mod
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					module git.yetaga.in/alazyreader/prusa-connect-local
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					go 1.18
 | 
				
			||||||
							
								
								
									
										55
									
								
								main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								main.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"bytes"
 | 
				
			||||||
 | 
						"flag"
 | 
				
			||||||
 | 
						"io"
 | 
				
			||||||
 | 
						"log"
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Config struct {
 | 
				
			||||||
 | 
						PrinterHostname string
 | 
				
			||||||
 | 
						Port            string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						var hostname string
 | 
				
			||||||
 | 
						flag.StringVar(&hostname, "hostname", "localhost", "Hostname the Prusa Connect API is available at (assumes http)")
 | 
				
			||||||
 | 
						var port string
 | 
				
			||||||
 | 
						flag.StringVar(&port, "port", "3000", "Local port to run server on")
 | 
				
			||||||
 | 
						config := Config{
 | 
				
			||||||
 | 
							PrinterHostname: "http://" + hostname,
 | 
				
			||||||
 | 
							Port:            port,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 | 
							if r.URL.Path == "index.html" || r.URL.Path == "/" {
 | 
				
			||||||
 | 
								http.ServeFile(w, r, "./static/")
 | 
				
			||||||
 | 
							} else if strings.HasSuffix(r.URL.Path, ".js") {
 | 
				
			||||||
 | 
								http.ServeFile(w, r, "./static/"+r.URL.Path)
 | 
				
			||||||
 | 
							} else if strings.HasSuffix(r.URL.Path, ".css") {
 | 
				
			||||||
 | 
								http.ServeFile(w, r, "./static/"+r.URL.Path)
 | 
				
			||||||
 | 
							} else if strings.HasSuffix(r.URL.Path, ".ico") {
 | 
				
			||||||
 | 
								http.ServeFile(w, r, "./static/"+r.URL.Path)
 | 
				
			||||||
 | 
							} else if strings.HasPrefix(r.URL.Path, "/api") {
 | 
				
			||||||
 | 
								resp, err := http.Get(config.PrinterHostname + r.URL.Path)
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									log.Println(err)
 | 
				
			||||||
 | 
									http.NotFoundHandler().ServeHTTP(w, r)
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									b, err := io.ReadAll(resp.Body)
 | 
				
			||||||
 | 
									if err != nil {
 | 
				
			||||||
 | 
										log.Println(err)
 | 
				
			||||||
 | 
										http.NotFoundHandler().ServeHTTP(w, r)
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									http.ServeContent(w, r, "", time.Now(), bytes.NewReader(b))
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								http.NotFoundHandler().ServeHTTP(w, r)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						http.ListenAndServe(":"+config.Port, nil)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								static/favicon.ico
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								static/favicon.ico
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 1.1 KiB  | 
							
								
								
									
										10
									
								
								static/index.html
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										10
									
								
								static/index.html
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html>
 | 
				
			||||||
 | 
					  <head>
 | 
				
			||||||
 | 
					    <meta charset="utf-8" />
 | 
				
			||||||
 | 
					    <title>Original Prusa Mini - Prusa Connect</title>
 | 
				
			||||||
 | 
					  <link rel="shortcut icon" href="favicon.ico"><link href="main.b322e2869b73e803bb67.css" rel="stylesheet"></head>
 | 
				
			||||||
 | 
					  <body>
 | 
				
			||||||
 | 
					    <noscript>Your browser does not support JavaScript!</noscript>
 | 
				
			||||||
 | 
					  <script type="text/javascript" src="main.b322e2869b73e803bb67.js"></script></body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
							
								
								
									
										5
									
								
								static/main.b322e2869b73e803bb67.css
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								static/main.b322e2869b73e803bb67.css
									
									
									
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								static/main.b322e2869b73e803bb67.js
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								static/main.b322e2869b73e803bb67.js
									
									
									
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Reference in New Issue
	
	Block a user