Refactor into client + server backends
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
package client_api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type Describe struct {
|
||||
Name string `json:"name"`
|
||||
Icon string `json:"icon"`
|
||||
}
|
||||
|
||||
func describeHandler(data_dir string, w http.ResponseWriter, r *http.Request) {
|
||||
log.Debugf("/describe called\n")
|
||||
return_json := Describe{
|
||||
Name: "mediasrv-server",
|
||||
Icon: "",
|
||||
}
|
||||
data, err := json.Marshal(return_json)
|
||||
if err != nil {
|
||||
log.Errorf("Could not marshal data: %v\n", err)
|
||||
return
|
||||
}
|
||||
w.Write(data)
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package client_api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
|
||||
"git.ohea.xyz/mediasrv/server/database"
|
||||
"github.com/op/go-logging"
|
||||
)
|
||||
|
||||
var log = logging.MustGetLogger("mediasrv-server")
|
||||
|
||||
type Episodes struct {
|
||||
Episodes []database.Episode `json:"episodes"`
|
||||
}
|
||||
|
||||
func episodesHandler(data_dir string, w http.ResponseWriter, r *http.Request) {
|
||||
log.Debugf("/episodes called\n")
|
||||
db, _, err := database.OpenDatabase(data_dir)
|
||||
if err != nil {
|
||||
log.Errorf("Could not open database: %v\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
rows, err := db.Query("SELECT title, show_title, number, season, original_filename FROM episodes")
|
||||
if err != nil {
|
||||
log.Errorf("Could not check if database was new: %v", err)
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var return_json Episodes
|
||||
|
||||
for {
|
||||
if !rows.Next() {
|
||||
err = rows.Err()
|
||||
if err != nil {
|
||||
log.Fatalf("Could not get row from database: %v\n", err)
|
||||
return
|
||||
} else {
|
||||
log.Debugf("%v rows processed\n", len(return_json.Episodes))
|
||||
break
|
||||
}
|
||||
}
|
||||
var episode database.Episode
|
||||
rows.Scan(&episode.Title, &episode.ShowTitle, &episode.Episode, &episode.Season, &episode.OriginalFilename)
|
||||
|
||||
return_json.Episodes = append(return_json.Episodes, episode)
|
||||
}
|
||||
data, err := json.Marshal(return_json)
|
||||
if err != nil {
|
||||
log.Errorf("Could not marshal episode data: %v\n", err)
|
||||
return
|
||||
}
|
||||
w.Write(data)
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package client_api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type InProgress struct {
|
||||
Data []int `json:"data"`
|
||||
}
|
||||
|
||||
func inProgressHandler(data_dir string, w http.ResponseWriter, r *http.Request) {
|
||||
log.Debugf("/in_progress called\n")
|
||||
return_json := InProgress{
|
||||
Data: []int{1, 2, 3},
|
||||
}
|
||||
data, err := json.Marshal(return_json)
|
||||
if err != nil {
|
||||
log.Errorf("Could not marshal data: %v\n", err)
|
||||
return
|
||||
}
|
||||
w.Write(data)
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package client_api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type RecentlyAdded struct {
|
||||
Data []int `json:"data"`
|
||||
}
|
||||
|
||||
func recentlyAddedHandler(data_dir string, w http.ResponseWriter, r *http.Request) {
|
||||
log.Debugf("/recently_added called\n")
|
||||
return_json := RecentlyAdded{
|
||||
Data: []int{4, 5, 6},
|
||||
}
|
||||
data, err := json.Marshal(return_json)
|
||||
if err != nil {
|
||||
log.Errorf("Could not marshal data: %v\n", err)
|
||||
return
|
||||
}
|
||||
w.Write(data)
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package client_api
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func SetupHTTPServer(mux *http.ServeMux, data_dir string) {
|
||||
mux.HandleFunc("/client/episodes", func(w http.ResponseWriter, r *http.Request) {
|
||||
episodesHandler(data_dir, w, r)
|
||||
})
|
||||
mux.HandleFunc("/client/shows", func(w http.ResponseWriter, r *http.Request) {
|
||||
showsHandler(data_dir, w, r)
|
||||
})
|
||||
mux.HandleFunc("/client/describe", func(w http.ResponseWriter, r *http.Request) {
|
||||
describeHandler(data_dir, w, r)
|
||||
})
|
||||
mux.HandleFunc("/client/recently_added", func(w http.ResponseWriter, r *http.Request) {
|
||||
recentlyAddedHandler(data_dir, w, r)
|
||||
})
|
||||
mux.HandleFunc("/client/in_progress", func(w http.ResponseWriter, r *http.Request) {
|
||||
inProgressHandler(data_dir, w, r)
|
||||
})
|
||||
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package client_api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
|
||||
"git.ohea.xyz/mediasrv/server/database"
|
||||
)
|
||||
|
||||
type TVShow struct {
|
||||
Id int `json:"id"`
|
||||
Title string `json:"title"`
|
||||
Year int `json:"year"`
|
||||
Description string `json:"description"`
|
||||
Poster string `json:"poster"`
|
||||
}
|
||||
|
||||
type Shows struct {
|
||||
Data []TVShow `json:"data"`
|
||||
}
|
||||
|
||||
func showsHandler(data_dir string, w http.ResponseWriter, r *http.Request) {
|
||||
log.Debugf("/shows called\n")
|
||||
db, _, err := database.OpenDatabase(data_dir)
|
||||
if err != nil {
|
||||
log.Errorf("Could not open database: %v\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
rows, err := db.Query("SELECT id, title, year, description, poster FROM tvshows")
|
||||
if err != nil {
|
||||
log.Errorf("Could not check if database was new: %v", err)
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var return_json Shows
|
||||
|
||||
for {
|
||||
if !rows.Next() {
|
||||
err = rows.Err()
|
||||
if err != nil {
|
||||
log.Fatalf("Could not get row from database: %v\n", err)
|
||||
return
|
||||
} else {
|
||||
log.Debugf("%v rows processed\n", len(return_json.Data))
|
||||
break
|
||||
}
|
||||
}
|
||||
var show TVShow
|
||||
rows.Scan(&show.Id, &show.Title, &show.Year, &show.Description, &show.Poster)
|
||||
|
||||
return_json.Data = append(return_json.Data, show)
|
||||
}
|
||||
data, err := json.Marshal(return_json)
|
||||
if err != nil {
|
||||
log.Errorf("Could not marshal episode data: %v\n", err)
|
||||
return
|
||||
}
|
||||
w.Write(data)
|
||||
}
|
||||
Reference in New Issue
Block a user