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