Merge branch 'ft/main_router'

This commit is contained in:
2025-11-14 04:05:03 +03:00
8 changed files with 106 additions and 1 deletions

68
api/http_handler.go Normal file
View File

@@ -0,0 +1,68 @@
package api
import (
"fmt"
"log"
"net/http"
"github.com/gorilla/mux"
"github.com/gorilla/websocket"
)
func ping(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "pong")
}
func serveStaticFile(fileName string) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
// TODO: check out why does this even need the request? does it take the file path from it,
// is is possible to manipulate the path like using .. to get around?!
http.ServeFile(w, r, "front_files/"+fileName)
}
}
func createSession(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, `
{
"sessionId":"XyZ123"
}
`)
}
var upgrader = websocket.Upgrader{}
func signalWS(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
party := vars["party"]
session := vars["session"]
fmt.Printf("Initiating a websocket, party=%s session=%s\n", party, session)
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
fmt.Printf("Error initiating websocket, r.URL=%s e=%s", r.URL.String(), err)
}
websocketSignaler(conn)
}
func BuildRouter(listenAddress string) {
mainRouter := mux.NewRouter()
mainRouter.HandleFunc("/ping", ping)
mainRouter.HandleFunc("/", serveStaticFile("index.html"))
mainRouter.HandleFunc("/index.js", serveStaticFile("index.js"))
mainRouter.HandleFunc("/index.css", serveStaticFile("index.css"))
api_router := mainRouter.PathPrefix("/api").Subrouter()
api_router.HandleFunc("/session", createSession).Methods("POST")
api_router.HandleFunc("/signal/session/{session}/party/{party}", signalWS)
err := http.ListenAndServe(listenAddress, mainRouter)
if err != nil {
log.Fatalf("Error running the web server %s", err)
}
}

21
api/ws_handler.go Normal file
View File

@@ -0,0 +1,21 @@
package api
import "github.com/gorilla/websocket"
func websocketSignaler(conn *websocket.Conn) {
defer conn.Close()
for {
msgType, msg, err := conn.ReadMessage()
if err != nil {
return
}
// Let's just echo for now as a placeholder
err = conn.WriteMessage(msgType, msg)
if err != nil {
return
}
}
}

0
front_files/index.css Normal file
View File

3
front_files/index.html Normal file
View File

@@ -0,0 +1,3 @@
<title>Echo: True Peer-to-Peer file and text transfers</title>

0
front_files/index.js Normal file
View File

4
go.mod
View File

@@ -1,3 +1,7 @@
module echo
go 1.22.2
require github.com/gorilla/mux v1.8.1
require github.com/gorilla/websocket v1.5.3

4
go.sum Normal file
View File

@@ -0,0 +1,4 @@
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=

View File

@@ -1,7 +1,12 @@
package main
import "fmt"
import (
"echo/api"
"fmt"
)
func main() {
fmt.Println("Hello from echo-echo-cho-o")
api.BuildRouter(":8080")
}