Skip to content

Commit

Permalink
Merge pull request #137 from sonroyaalmerol/use-slug-stream
Browse files Browse the repository at this point in the history
Remove base64 encoding from m3u generation
  • Loading branch information
sonroyaalmerol committed Aug 27, 2024
2 parents 568b431 + c38561f commit 342e02e
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 81 deletions.
12 changes: 4 additions & 8 deletions m3u/generate.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package m3u

import (
"errors"
"fmt"
"log"
"m3u-stream-merger/database"
"m3u-stream-merger/utils"
"net/http"
"net/url"
"os"
"path"
"strings"
"sync"
)
Expand Down Expand Up @@ -55,19 +55,15 @@ func getFileExtensionFromUrl(rawUrl string) (string, error) {
if err != nil {
return "", err
}
pos := strings.LastIndex(u.Path, ".")
if pos == -1 {
return "", errors.New("couldn't find a period to indicate a file extension")
}
return u.Path[pos+1:], nil
return path.Ext(u.Path), nil
}

func GenerateStreamURL(baseUrl string, slug string, sampleUrl string) string {
ext, err := getFileExtensionFromUrl(sampleUrl)
if err != nil {
return fmt.Sprintf("%s/%s\n", baseUrl, utils.GetStreamUrl(slug))
return fmt.Sprintf("%s/%s\n", baseUrl, slug)
}
return fmt.Sprintf("%s/%s.%s\n", baseUrl, utils.GetStreamUrl(slug), ext)
return fmt.Sprintf("%s/%s.%s\n", baseUrl, slug, ext)
}

func GenerateAndCacheM3UContent(db *database.Instance, r *http.Request) string {
Expand Down
13 changes: 3 additions & 10 deletions stream_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -222,16 +222,9 @@ func streamHandler(w http.ResponseWriter, r *http.Request, db *database.Instance
return
}

streamSlug := utils.GetStreamSlugFromUrl(streamUrl)
if streamSlug == "" {
utils.SafeLogPrintf(r, nil, "No stream found for streamUrl %s from %s\n", streamUrl, r.RemoteAddr)
http.NotFound(w, r)
return
}

stream, err := db.GetStreamBySlug(streamSlug)
stream, err := db.GetStreamBySlug(streamUrl)
if err != nil {
utils.SafeLogPrintf(r, nil, "Error retrieving stream for slug %s: %v\n", streamSlug, err)
utils.SafeLogPrintf(r, nil, "Error retrieving stream for slug %s: %v\n", streamUrl, err)
http.NotFound(w, r)
return
}
Expand All @@ -252,7 +245,7 @@ func streamHandler(w http.ResponseWriter, r *http.Request, db *database.Instance
default:
resp, selectedUrl, selectedIndex, err = loadBalancer(stream, &testedIndexes, r.Method)
if err != nil {
utils.SafeLogPrintf(r, nil, "Error reloading stream for %s: %v\n", streamSlug, err)
utils.SafeLogPrintf(r, nil, "Error reloading stream for %s: %v\n", streamUrl, err)
return
}

Expand Down
13 changes: 0 additions & 13 deletions utils/url.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package utils

import (
"encoding/base64"
"fmt"
"log"
"net/http"
Expand All @@ -12,18 +11,6 @@ import (
"strings"
)

func GetStreamUrl(slug string) string {
return base64.URLEncoding.EncodeToString([]byte(slug))
}

func GetStreamSlugFromUrl(streamUID string) string {
decoded, err := base64.URLEncoding.DecodeString(streamUID)
if err != nil {
return ""
}
return string(decoded)
}

func EOFIsExpected(resp *http.Response) bool {
knownMimeTypes := []string{
"application/x-mpegurl",
Expand Down
50 changes: 0 additions & 50 deletions utils/utils_test.go

This file was deleted.

0 comments on commit 342e02e

Please sign in to comment.