mirror of
https://github.com/marcel-dempers/docker-development-youtube-series.git
synced 2025-06-06 17:01:30 +00:00
113 lines
2.0 KiB
Go
113 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"net/http"
|
|
"encoding/json"
|
|
"io/ioutil"
|
|
"fmt"
|
|
"os"
|
|
"context"
|
|
"strings"
|
|
"github.com/go-redis/redis/v8"
|
|
)
|
|
|
|
var ctx = context.Background()
|
|
var redisClient *redis.Client
|
|
|
|
func main() {
|
|
|
|
var redis_sentinels = os.Getenv("REDIS_SENTINELS")
|
|
var redis_master = os.Getenv("REDIS_MASTER_NAME")
|
|
var redis_password = os.Getenv("REDIS_PASSWORD")
|
|
|
|
sentinelAddrs := strings.Split(redis_sentinels, ",")
|
|
|
|
rdb := redis.NewFailoverClient(&redis.FailoverOptions{
|
|
MasterName: redis_master,
|
|
SentinelAddrs: sentinelAddrs,
|
|
Password: redis_password,
|
|
DB: 0,
|
|
})
|
|
|
|
redisClient = rdb
|
|
|
|
rdb.Ping(ctx)
|
|
|
|
http.HandleFunc("/", HandleGetVideos)
|
|
http.HandleFunc("/update", HandleUpdateVideos)
|
|
|
|
http.ListenAndServe(":80", nil)
|
|
}
|
|
|
|
func HandleGetVideos(w http.ResponseWriter, r *http.Request){
|
|
|
|
id, ok := r.URL.Query()["id"]
|
|
|
|
if ok {
|
|
videoID := id[0]
|
|
video := getVideo(videoID)
|
|
|
|
if video.Id == "" { //video not found, or empty ID
|
|
w.WriteHeader(http.StatusNotFound)
|
|
w.Write([]byte("{}"))
|
|
return
|
|
}
|
|
|
|
videoBytes, err := json.Marshal(video)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
w.Write(videoBytes)
|
|
return
|
|
|
|
}
|
|
|
|
videos := getVideos()
|
|
videoBytes, err := json.Marshal(videos)
|
|
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
w.Write(videoBytes)
|
|
}
|
|
|
|
func HandleUpdateVideos(w http.ResponseWriter, r *http.Request){
|
|
|
|
if r.Method == "POST" {
|
|
|
|
body, err := ioutil.ReadAll(r.Body)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
_, ok := r.URL.Query()["id"]
|
|
|
|
if ok {
|
|
var video video
|
|
err = json.Unmarshal(body, &video)
|
|
if err != nil {
|
|
w.WriteHeader(400)
|
|
fmt.Fprintf(w, "Bad request")
|
|
}
|
|
|
|
saveVideo(video)
|
|
return
|
|
|
|
}
|
|
|
|
var videos []video
|
|
err = json.Unmarshal(body, &videos)
|
|
if err != nil {
|
|
w.WriteHeader(400)
|
|
fmt.Fprintf(w, "Bad request")
|
|
}
|
|
|
|
saveVideos(videos)
|
|
return
|
|
|
|
} else {
|
|
w.WriteHeader(405)
|
|
fmt.Fprintf(w, "Method not Supported!")
|
|
}
|
|
} |