updated to name based ID for streams instead of url

This commit is contained in:
BroodjeAap 2020-07-12 12:32:48 +00:00
parent 5d99649696
commit 664fe5c22d
4 changed files with 55 additions and 38 deletions

54
main.go
View file

@ -22,7 +22,7 @@ type Server struct {
}
func (server Server) index(w http.ResponseWriter, r *http.Request) {
if r.FormValue("URL") == "" {
if r.FormValue("name") == "" {
indexTemplate, err := template.ParseFiles(indexHTML, baseHTML)
if err != nil {
log.Fatal(err)
@ -30,19 +30,16 @@ func (server Server) index(w http.ResponseWriter, r *http.Request) {
indexTemplate.Execute(w, server.Streams)
return
}
URL := r.FormValue("URL")
stream, exists := server.Streams[URL]
name := r.FormValue("name")
stream, exists := server.Streams[name]
if !exists {
stream = NewStream("test", URL)
server.Streams[URL] = stream
go stream.UpdateInterval()
return
}
streamTemplate, err := template.ParseFiles(streamHTML, baseHTML)
if err != nil {
log.Fatal(err)
}
streamTemplate.Execute(w, stream)
}
@ -64,6 +61,7 @@ func (server Server) addStream(w http.ResponseWriter, r *http.Request) {
}
if !exists && name != "" && URL != "" {
server.Streams[name] = NewStream(name, URL)
go server.Streams[name].UpdateInterval()
http.Redirect(w, r, "/", http.StatusTemporaryRedirect)
}
}
@ -81,13 +79,13 @@ func (server Server) addStream(w http.ResponseWriter, r *http.Request) {
}
func (server Server) stream(w http.ResponseWriter, r *http.Request) {
if r.FormValue("URL") == "" {
if r.FormValue("name") == "" {
return
}
w.Header().Set("Content-Type", "image/jpeg")
URL := r.FormValue("URL")
name := r.FormValue("name")
stream, exists := server.Streams[URL]
stream, exists := server.Streams[name]
if !exists {
return
}
@ -99,19 +97,19 @@ func (server Server) stream(w http.ResponseWriter, r *http.Request) {
jpg, err := gocv.IMEncode(".jpg", mat)
if err != nil {
log.Fatal("Could not encode Mat to jpg:", URL)
log.Fatal("Could not encode Mat to jpg:", name)
}
w.Write(jpg)
}
func (server Server) previous(w http.ResponseWriter, r *http.Request) {
if r.FormValue("URL") == "" {
if r.FormValue("name") == "" {
return
}
w.Header().Set("Content-Type", "image/jpeg")
URL := r.FormValue("URL")
name := r.FormValue("name")
stream, exists := server.Streams[URL]
stream, exists := server.Streams[name]
if !exists {
return
}
@ -120,19 +118,19 @@ func (server Server) previous(w http.ResponseWriter, r *http.Request) {
}
jpg, err := gocv.IMEncode(".jpg", stream.IMReadPrevious())
if err != nil {
log.Fatal("Could not encode Mat to jpg:", URL)
log.Fatal("Could not encode Mat to jpg:", name)
}
w.Write(jpg)
}
func (server Server) currentColor(w http.ResponseWriter, r *http.Request) {
if r.FormValue("URL") == "" {
if r.FormValue("name") == "" {
return
}
w.Header().Set("Content-Type", "image/jpeg")
URL := r.FormValue("URL")
name := r.FormValue("name")
stream, exists := server.Streams[URL]
stream, exists := server.Streams[name]
if !exists {
return
}
@ -141,19 +139,19 @@ func (server Server) currentColor(w http.ResponseWriter, r *http.Request) {
}
jpg, err := gocv.IMEncode(".jpg", stream.IMReadCurrentColor())
if err != nil {
log.Fatal("Could not encode Mat to jpg:", URL)
log.Fatal("Could not encode Mat to jpg:", name)
}
w.Write(jpg)
}
func (server Server) debug(w http.ResponseWriter, r *http.Request) {
if r.FormValue("URL") == "" {
if r.FormValue("name") == "" {
return
}
w.Header().Set("Content-Type", "image/jpeg")
URL := r.FormValue("URL")
name := r.FormValue("name")
stream, exists := server.Streams[URL]
stream, exists := server.Streams[name]
if !exists {
return
}
@ -162,19 +160,19 @@ func (server Server) debug(w http.ResponseWriter, r *http.Request) {
}
jpg, err := gocv.IMEncode(".jpg", stream.IMReadDebug())
if err != nil {
log.Fatal("Could not encode Mat to jpg:", URL)
log.Fatal("Could not encode Mat to jpg:", name)
}
w.Write(jpg)
}
func (server Server) current(w http.ResponseWriter, r *http.Request) {
if r.FormValue("URL") == "" {
if r.FormValue("name") == "" {
return
}
w.Header().Set("Content-Type", "image/jpeg")
URL := r.FormValue("URL")
name := r.FormValue("name")
stream, exists := server.Streams[URL]
stream, exists := server.Streams[name]
if !exists {
return
}
@ -183,7 +181,7 @@ func (server Server) current(w http.ResponseWriter, r *http.Request) {
}
jpg, err := gocv.IMEncode(".jpg", stream.IMReadCurrent())
if err != nil {
log.Fatal("Could not encode Mat to jpg:", URL)
log.Fatal("Could not encode Mat to jpg:", name)
}
w.Write(jpg)
}
@ -208,7 +206,7 @@ func main() {
streamJSONFile, _ := ioutil.ReadFile(streamJSONPath)
stream := Stream{}
json.Unmarshal([]byte(streamJSONFile), &stream)
server.Streams[stream.URL] = stream
server.Streams[stream.Name] = stream
go stream.UpdateInterval()
}

View file

@ -205,7 +205,7 @@ func (s Stream) WriteStreamJSON() {
// GetStreamStoreDirPath returns filepath.Join(s.GetStreamDirPath(), s.Base64)
func (s Stream) GetStreamStoreDirPath() string {
return filepath.Join(GetStreamDirPath(), s.Base64)
return filepath.Join(GetStreamDirPath(), s.Name)
}
// GetPreviousInstantPath returns filepath.Join(GetStreamDirPath(), s.Base64, "previous.jpg")

View file

@ -1,8 +1,27 @@
{{template "base" .}}
{{define "content"}}
<h1>Stream URL</h1>
<form method="GET">
<label>URL:</label>
<input type="text" name="URL" size="100">
</form>
<table class="pure-table pure-table-horizontal pure-table-striped">
<caption>Streams</caption>
<thead>
<tr>
<th>Name</th>
<th>URL</th>
<th>Watches</th>
<th>Interval (ms)</th>
<th>Watch</th>
</tr>
</thead>
<tr>
<td colspan="5"><a href="/addStream">Add</a></td>
</tr>
{{range $streamName, $stream := .}}
<tr>
<td>{{ $stream.Name }}</td>
<td>{{ $stream.URL }} </td>
<td>{{ len $stream.Watches }} </td>
<td>{{ $stream.Interval }}</td>
<td><a href="/?name={{ $stream.Name }}">Go</a></td>
</tr>
{{end}}
</table>
{{end}}

View file

@ -1,7 +1,7 @@
{{template "base" .}}
{{define "content"}}
<img src="/stream?URL={{.URL}}">
<img src="/previous?URL={{.URL}}" width="425" height="240">
<img src="/debug?URL={{.URL}}" width="425" height="240">
<img src="/current?URL={{.URL}}" width="425" height="240">
<img src="/stream?name={{.Name}}">
<img src="/previous?name={{.Name}}" width="425" height="240">
<img src="/debug?name={{.Name}}" width="425" height="240">
<img src="/current?name={{.Name}}" width="425" height="240">
{{end}}