From ccdb1479f7b2444962f1b798266e73eefac08251 Mon Sep 17 00:00:00 2001 From: Alex X Date: Sun, 9 Mar 2025 17:46:13 +0300 Subject: [PATCH] Code refactoring for RtspToWeb format support #1632 --- internal/webrtc/server.go | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/internal/webrtc/server.go b/internal/webrtc/server.go index a59548b3..51565a74 100644 --- a/internal/webrtc/server.go +++ b/internal/webrtc/server.go @@ -5,7 +5,6 @@ import ( "encoding/json" "io" "net/http" - urlParser "net/url" "strconv" "strings" "time" @@ -64,8 +63,8 @@ func syncHandler(w http.ResponseWriter, r *http.Request) { // 2. application/sdp - receive/response SDP via WebRTC-HTTP Egress Protocol (WHEP) // 3. other - receive/response raw SDP func outputWebRTC(w http.ResponseWriter, r *http.Request) { - url := r.URL.Query().Get("src") - stream := streams.Get(url) + u := r.URL.Query().Get("src") + stream := streams.Get(u) if stream == nil { http.Error(w, api.StreamNotFound, http.StatusNotFound) return @@ -90,26 +89,19 @@ func outputWebRTC(w http.ResponseWriter, r *http.Request) { offer = desc.SDP case "application/x-www-form-urlencoded": - body, err := io.ReadAll(r.Body) - if err != nil { + if err := r.ParseForm(); err != nil { log.Error().Err(err).Caller().Send() - http.Error(w, err.Error(), http.StatusInternalServerError) + http.Error(w, err.Error(), http.StatusBadRequest) return } - values, err := urlParser.ParseQuery(string(body)) + offerB64 := r.Form.Get("data") + b, err := base64.StdEncoding.DecodeString(offerB64) if err != nil { log.Error().Err(err).Caller().Send() http.Error(w, err.Error(), http.StatusBadRequest) return } - encodedOffer := values.Get("data") - decodedOffer, err := base64.StdEncoding.DecodeString(encodedOffer) - if err != nil { - log.Error().Err(err).Caller().Send() - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - offer = string(decodedOffer) + offer = string(b) default: body, err := io.ReadAll(r.Body) @@ -150,8 +142,8 @@ func outputWebRTC(w http.ResponseWriter, r *http.Request) { case "application/x-www-form-urlencoded": w.Header().Set("Content-Type", mediaType) - encodedAnswer := base64.StdEncoding.EncodeToString([]byte(answer)) - _, err = w.Write([]byte(encodedAnswer)) + answerB64 := base64.StdEncoding.EncodeToString([]byte(answer)) + _, err = w.Write([]byte(answerB64)) case MimeSDP: w.Header().Set("Content-Type", mediaType)