add missing apidoc, dont show sendrequest form on docpage
fix unit tests
This commit is contained in:
parent
31ad6ec1e5
commit
b59b6a17f4
@ -5,13 +5,13 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func cleanUp() {
|
func cleanUp() {
|
||||||
handlers = nil
|
handlers = make(map[string]Handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAddHandler(t *testing.T) {
|
func TestAddHandler(t *testing.T) {
|
||||||
cleanUp()
|
cleanUp()
|
||||||
|
|
||||||
AddHandler("test", ActorNode, nil, func() []byte {
|
AddHandler("test", ActorNode, func(info *HandlerInfo) []byte {
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
if len(handlers) != 1 {
|
if len(handlers) != 1 {
|
||||||
@ -23,13 +23,13 @@ func TestCallOfHandler(t *testing.T) {
|
|||||||
cleanUp()
|
cleanUp()
|
||||||
|
|
||||||
i := 0
|
i := 0
|
||||||
AddHandler("test", ActorNode, nil, func() []byte {
|
AddHandler("test", ActorNode, func(info *HandlerInfo) []byte {
|
||||||
i++
|
i++
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
// simulate the call of the api
|
// simulate the call of the api
|
||||||
handleAPICall("test", "", ActorNode)
|
handleAPICall("test", "", ActorNode, nil)
|
||||||
|
|
||||||
if i != 1 {
|
if i != 1 {
|
||||||
t.Errorf("Unexpected number of Lambda calls : %d/1", i)
|
t.Errorf("Unexpected number of Lambda calls : %d/1", i)
|
||||||
@ -39,26 +39,32 @@ func TestCallOfHandler(t *testing.T) {
|
|||||||
func TestDecodingOfArguments(t *testing.T) {
|
func TestDecodingOfArguments(t *testing.T) {
|
||||||
cleanUp()
|
cleanUp()
|
||||||
|
|
||||||
var myvar struct {
|
AddHandler("test", ActorNode, func(info *HandlerInfo) []byte {
|
||||||
Test string
|
var args struct {
|
||||||
TestInt int
|
Test string
|
||||||
}
|
TestInt int
|
||||||
AddHandler("test", ActorNode, &myvar, func() []byte {
|
}
|
||||||
|
err := FillStruct(&args, info.Data)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Error parsing args: %s", err.Error())
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if args.TestInt != 42 || args.Test != "myString" {
|
||||||
|
t.Errorf("Wrong parsing of argument parameters : %d/42 - %s/myString", args.TestInt, args.Test)
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
// simulate the call of the api
|
// simulate the call of the api
|
||||||
handleAPICall("test", `{"Test":"myString","TestInt":42}`, ActorNode)
|
handleAPICall("test", `{"Test":"myString","TestInt":42}`, ActorNode, nil)
|
||||||
|
|
||||||
if myvar.TestInt != 42 || myvar.Test != "myString" {
|
|
||||||
t.Errorf("Wrong parsing of argument parameters : %d/42 - %s/myString", myvar.TestInt, myvar.Test)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNoHandlerCovers(t *testing.T) {
|
func TestNoHandlerCovers(t *testing.T) {
|
||||||
cleanUp()
|
cleanUp()
|
||||||
|
|
||||||
ret := handleAPICall("test", "", ActorNode)
|
ret := handleAPICall("test", "", ActorNode, nil)
|
||||||
|
|
||||||
if ret != nil {
|
if ret != nil {
|
||||||
t.Error("Expect nil return within unhandled api action")
|
t.Error("Expect nil return within unhandled api action")
|
||||||
|
@ -18,11 +18,42 @@ func AddSettingsHandlers() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getSettingsFromDB() {
|
func getSettingsFromDB() {
|
||||||
|
/**
|
||||||
|
* @api {post} /api/settings [loadGeneralSettings]
|
||||||
|
* @apiDescription Get the settings object
|
||||||
|
* @apiName loadGeneralSettings
|
||||||
|
* @apiGroup Settings
|
||||||
|
*
|
||||||
|
* @apiSuccess {Object} Settings Settings object
|
||||||
|
* @apiSuccess {string} Settings.VideoPath webserver path to the videos
|
||||||
|
* @apiSuccess {string} Settings.EpisodePath webserver path to the tvshows
|
||||||
|
* @apiSuccess {string} Settings.MediacenterName overall name of the mediacenter
|
||||||
|
* @apiSuccess {string} Settings.Password new server password (-1 if no password set)
|
||||||
|
* @apiSuccess {bool} Settings.TMDBGrabbing TMDB grabbing support to grab tag info and thumbnails
|
||||||
|
* @apiSuccess {bool} Settings.DarkMode Darkmode enabled?
|
||||||
|
* @apiSuccess {uint32} Settings.VideoNr total number of videos
|
||||||
|
* @apiSuccess {float32} Settings.DBSize total size of database
|
||||||
|
* @apiSuccess {uint32} Settings.DifferentTags number of different tags available
|
||||||
|
* @apiSuccess {uint32} Settings.TagsAdded number of different tags added to videos
|
||||||
|
* @apiSuccess {string} Settings.PathPrefix
|
||||||
|
*/
|
||||||
AddHandler("loadGeneralSettings", SettingsNode, func(info *HandlerInfo) []byte {
|
AddHandler("loadGeneralSettings", SettingsNode, func(info *HandlerInfo) []byte {
|
||||||
result := database.GetSettings()
|
result := database.GetSettings()
|
||||||
return jsonify(result)
|
return jsonify(result)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @api {post} /api/settings [loadInitialData]
|
||||||
|
* @apiDescription load startdata to display on homepage
|
||||||
|
* @apiName loadInitialData
|
||||||
|
* @apiGroup Settings
|
||||||
|
*
|
||||||
|
* @apiSuccess {string} VideoPath webserver path to the videos
|
||||||
|
* @apiSuccess {string} EpisodePath webserver path to the tvshows
|
||||||
|
* @apiSuccess {string} MediacenterName overall name of the mediacenter
|
||||||
|
* @apiSuccess {string} Pasword new server password (-1 if no password set)
|
||||||
|
* @apiSuccess {bool} DarkMode Darkmode enabled?
|
||||||
|
*/
|
||||||
AddHandler("loadInitialData", SettingsNode, func(info *HandlerInfo) []byte {
|
AddHandler("loadInitialData", SettingsNode, func(info *HandlerInfo) []byte {
|
||||||
sett := settings.LoadSettings()
|
sett := settings.LoadSettings()
|
||||||
|
|
||||||
@ -54,7 +85,24 @@ func getSettingsFromDB() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func saveSettingsToDB() {
|
func saveSettingsToDB() {
|
||||||
|
/**
|
||||||
|
* @api {post} /api/settings [saveGeneralSettings]
|
||||||
|
* @apiDescription Save the global settings provided
|
||||||
|
* @apiName saveGeneralSettings
|
||||||
|
* @apiGroup Settings
|
||||||
|
*
|
||||||
|
* @apiParam {Object} Settings Settings object
|
||||||
|
* @apiParam {string} Settings.VideoPath webserver path to the videos
|
||||||
|
* @apiParam {string} Settings.EpisodePath webserver path to the tvshows
|
||||||
|
* @apiParam {string} Settings.MediacenterName overall name of the mediacenter
|
||||||
|
* @apiParam {string} Settings.Password new server password (-1 if no password set)
|
||||||
|
* @apiParam {bool} Settings.TMDBGrabbing TMDB grabbing support to grab tag info and thumbnails
|
||||||
|
* @apiParam {bool} Settings.DarkMode Darkmode enabled?
|
||||||
|
*
|
||||||
|
* @apiSuccess {string} result 'success' if successfully or error message if not
|
||||||
|
*/
|
||||||
AddHandler("saveGeneralSettings", SettingsNode, func(info *HandlerInfo) []byte {
|
AddHandler("saveGeneralSettings", SettingsNode, func(info *HandlerInfo) []byte {
|
||||||
|
// todo correct type here!
|
||||||
var args struct {
|
var args struct {
|
||||||
Settings types.SettingsType
|
Settings types.SettingsType
|
||||||
}
|
}
|
||||||
@ -80,16 +128,38 @@ func saveSettingsToDB() {
|
|||||||
|
|
||||||
// methods for handling reindexing and cleanup of db gravity
|
// methods for handling reindexing and cleanup of db gravity
|
||||||
func reIndexHandling() {
|
func reIndexHandling() {
|
||||||
|
/**
|
||||||
|
* @api {post} /api/settings [startReindex]
|
||||||
|
* @apiDescription Start Database video reindex Job
|
||||||
|
* @apiName startReindex
|
||||||
|
* @apiGroup Settings
|
||||||
|
*
|
||||||
|
* @apiSuccess {string} result 'success' if successfully or error message if not
|
||||||
|
*/
|
||||||
AddHandler("startReindex", SettingsNode, func(info *HandlerInfo) []byte {
|
AddHandler("startReindex", SettingsNode, func(info *HandlerInfo) []byte {
|
||||||
videoparser.StartReindex()
|
videoparser.StartReindex()
|
||||||
return database.ManualSuccessResponse(nil)
|
return database.ManualSuccessResponse(nil)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @api {post} /api/settings [startTVShowReindex]
|
||||||
|
* @apiDescription Start Database TVShow reindex job
|
||||||
|
* @apiName startTVShowReindex
|
||||||
|
* @apiGroup Settings
|
||||||
|
*
|
||||||
|
* @apiSuccess {string} result 'success' if successfully or error message if not
|
||||||
|
*/
|
||||||
AddHandler("startTVShowReindex", SettingsNode, func(info *HandlerInfo) []byte {
|
AddHandler("startTVShowReindex", SettingsNode, func(info *HandlerInfo) []byte {
|
||||||
videoparser.StartTVShowReindex()
|
videoparser.StartTVShowReindex()
|
||||||
return database.ManualSuccessResponse(nil)
|
return database.ManualSuccessResponse(nil)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @api {post} /api/settings [cleanupGravity]
|
||||||
|
* @apiDescription Start Database cleanup job
|
||||||
|
* @apiName cleanupGravity
|
||||||
|
* @apiGroup Settings
|
||||||
|
*/
|
||||||
AddHandler("cleanupGravity", SettingsNode, func(info *HandlerInfo) []byte {
|
AddHandler("cleanupGravity", SettingsNode, func(info *HandlerInfo) []byte {
|
||||||
videoparser.StartCleanup()
|
videoparser.StartCleanup()
|
||||||
return nil
|
return nil
|
||||||
|
@ -6,12 +6,36 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func AddTvshowHandlers() {
|
func AddTvshowHandlers() {
|
||||||
|
/**
|
||||||
|
* @api {post} /api/tvshow [getTVShows]
|
||||||
|
* @apiDescription get all available tv shows
|
||||||
|
* @apiName getTVShows
|
||||||
|
* @apiGroup TVshow
|
||||||
|
*
|
||||||
|
* @apiSuccess {Object[]} .
|
||||||
|
* @apiSuccess {uint32} .Id tvshow id
|
||||||
|
* @apiSuccess {string} .Name tvshow name
|
||||||
|
*/
|
||||||
AddHandler("getTVShows", TVShowNode, func(info *HandlerInfo) []byte {
|
AddHandler("getTVShows", TVShowNode, func(info *HandlerInfo) []byte {
|
||||||
query := "SELECT id, name FROM tvshow"
|
query := "SELECT id, name FROM tvshow"
|
||||||
rows := database.Query(query)
|
rows := database.Query(query)
|
||||||
return jsonify(readTVshowsFromResultset(rows))
|
return jsonify(readTVshowsFromResultset(rows))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @api {post} /api/tvshow [getEpisodes]
|
||||||
|
* @apiDescription get all Episodes of a TVShow
|
||||||
|
* @apiName getEpisodes
|
||||||
|
* @apiGroup TVshow
|
||||||
|
*
|
||||||
|
* @apiParam {uint32} ShowID id of tvshow to get episodes from
|
||||||
|
*
|
||||||
|
* @apiSuccess {Object[]} .
|
||||||
|
* @apiSuccess {uint32} .ID episode id
|
||||||
|
* @apiSuccess {string} .Name episode name
|
||||||
|
* @apiSuccess {uint8} .Season Season number
|
||||||
|
* @apiSuccess {uint8} .Episode Episode number
|
||||||
|
*/
|
||||||
AddHandler("getEpisodes", TVShowNode, func(info *HandlerInfo) []byte {
|
AddHandler("getEpisodes", TVShowNode, func(info *HandlerInfo) []byte {
|
||||||
var args struct {
|
var args struct {
|
||||||
ShowID uint32
|
ShowID uint32
|
||||||
@ -46,6 +70,20 @@ func AddTvshowHandlers() {
|
|||||||
return jsonify(episodes)
|
return jsonify(episodes)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @api {post} /api/tvshow [loadEpisode]
|
||||||
|
* @apiDescription load all info of episode
|
||||||
|
* @apiName loadEpisode
|
||||||
|
* @apiGroup TVshow
|
||||||
|
*
|
||||||
|
* @apiParam {uint32} ID id of episode
|
||||||
|
*
|
||||||
|
* @apiSuccess {uint32} TVShowID episode id
|
||||||
|
* @apiSuccess {string} Name episode name
|
||||||
|
* @apiSuccess {uint8} Season Season number
|
||||||
|
* @apiSuccess {uint8} Episode Episode number
|
||||||
|
* @apiSuccess {string} Path webserver path of video file
|
||||||
|
*/
|
||||||
AddHandler("loadEpisode", TVShowNode, func(info *HandlerInfo) []byte {
|
AddHandler("loadEpisode", TVShowNode, func(info *HandlerInfo) []byte {
|
||||||
var args struct {
|
var args struct {
|
||||||
ID uint32
|
ID uint32
|
||||||
@ -83,6 +121,16 @@ WHERE tvshow_episodes.id=%d`, args.ID)
|
|||||||
return jsonify(ret)
|
return jsonify(ret)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @api {post} /api/tvshow [readThumbnail]
|
||||||
|
* @apiDescription Load Thubnail of specific episode
|
||||||
|
* @apiName readThumbnail
|
||||||
|
* @apiGroup TVshow
|
||||||
|
*
|
||||||
|
* @apiParam {int} Id id of episode to load thumbnail
|
||||||
|
*
|
||||||
|
* @apiSuccess {string} . Base64 encoded Thubnail
|
||||||
|
*/
|
||||||
AddHandler("readThumbnail", TVShowNode, func(info *HandlerInfo) []byte {
|
AddHandler("readThumbnail", TVShowNode, func(info *HandlerInfo) []byte {
|
||||||
var args struct {
|
var args struct {
|
||||||
Id int
|
Id int
|
||||||
|
@ -13,6 +13,17 @@ func AddTagHandlers() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func deleteFromDB() {
|
func deleteFromDB() {
|
||||||
|
/**
|
||||||
|
* @api {post} /api/tags [deleteTag]
|
||||||
|
* @apiDescription Start Database video reindex Job
|
||||||
|
* @apiName deleteTag
|
||||||
|
* @apiGroup Tags
|
||||||
|
*
|
||||||
|
* @apiParam {bool} [Force] force delete tag with its constraints
|
||||||
|
* @apiParam {int} TagId id of tag to delete
|
||||||
|
*
|
||||||
|
* @apiSuccess {string} result 'success' if successfully or error message if not
|
||||||
|
*/
|
||||||
AddHandler("deleteTag", TagNode, func(info *HandlerInfo) []byte {
|
AddHandler("deleteTag", TagNode, func(info *HandlerInfo) []byte {
|
||||||
var args struct {
|
var args struct {
|
||||||
TagId int
|
TagId int
|
||||||
@ -44,7 +55,7 @@ func deleteFromDB() {
|
|||||||
// check with regex if its the key constraint error
|
// check with regex if its the key constraint error
|
||||||
r := regexp.MustCompile("^.*a foreign key constraint fails.*$")
|
r := regexp.MustCompile("^.*a foreign key constraint fails.*$")
|
||||||
if r.MatchString(err.Error()) {
|
if r.MatchString(err.Error()) {
|
||||||
return []byte(`{"result":"not empty tag"}`)
|
return database.ManualSuccessResponse(fmt.Errorf("not empty tag"))
|
||||||
} else {
|
} else {
|
||||||
return database.ManualSuccessResponse(err)
|
return database.ManualSuccessResponse(err)
|
||||||
}
|
}
|
||||||
@ -53,6 +64,16 @@ func deleteFromDB() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getFromDB() {
|
func getFromDB() {
|
||||||
|
/**
|
||||||
|
* @api {post} /api/tags [getAllTags]
|
||||||
|
* @apiDescription get all available Tags
|
||||||
|
* @apiName getAllTags
|
||||||
|
* @apiGroup Tags
|
||||||
|
*
|
||||||
|
* @apiSuccess {Object[]} array of tag objects
|
||||||
|
* @apiSuccess {uint32} TagId
|
||||||
|
* @apiSuccess {string} TagName name of the Tag
|
||||||
|
*/
|
||||||
AddHandler("getAllTags", TagNode, func(info *HandlerInfo) []byte {
|
AddHandler("getAllTags", TagNode, func(info *HandlerInfo) []byte {
|
||||||
query := "SELECT tag_id,tag_name from tags"
|
query := "SELECT tag_id,tag_name from tags"
|
||||||
return jsonify(readTagsFromResultset(database.Query(query)))
|
return jsonify(readTagsFromResultset(database.Query(query)))
|
||||||
@ -60,6 +81,16 @@ func getFromDB() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func addToDB() {
|
func addToDB() {
|
||||||
|
/**
|
||||||
|
* @api {post} /api/tags [createTag]
|
||||||
|
* @apiDescription create a new tag
|
||||||
|
* @apiName createTag
|
||||||
|
* @apiGroup Tags
|
||||||
|
*
|
||||||
|
* @apiParam {string} TagName name of the tag
|
||||||
|
*
|
||||||
|
* @apiSuccess {string} result 'success' if successfully or error message if not
|
||||||
|
*/
|
||||||
AddHandler("createTag", TagNode, func(info *HandlerInfo) []byte {
|
AddHandler("createTag", TagNode, func(info *HandlerInfo) []byte {
|
||||||
var args struct {
|
var args struct {
|
||||||
TagName string
|
TagName string
|
||||||
@ -73,6 +104,17 @@ func addToDB() {
|
|||||||
return database.SuccessQuery(query, args.TagName)
|
return database.SuccessQuery(query, args.TagName)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @api {post} /api/tags [addTag]
|
||||||
|
* @apiDescription Add new tag to video
|
||||||
|
* @apiName addTag
|
||||||
|
* @apiGroup Tags
|
||||||
|
*
|
||||||
|
* @apiParam {int} TagId Tag id to add to video
|
||||||
|
* @apiParam {int} MovieId Video Id of video to add tag to
|
||||||
|
*
|
||||||
|
* @apiSuccess {string} result 'success' if successfully or error message if not
|
||||||
|
*/
|
||||||
AddHandler("addTag", TagNode, func(info *HandlerInfo) []byte {
|
AddHandler("addTag", TagNode, func(info *HandlerInfo) []byte {
|
||||||
var args struct {
|
var args struct {
|
||||||
MovieId int
|
MovieId int
|
||||||
|
@ -79,5 +79,11 @@
|
|||||||
"prettier-config": "^1.0.0",
|
"prettier-config": "^1.0.0",
|
||||||
"react-scripts": "4.0.3",
|
"react-scripts": "4.0.3",
|
||||||
"apidoc": "^0.28.1"
|
"apidoc": "^0.28.1"
|
||||||
|
},
|
||||||
|
"apidoc":{
|
||||||
|
"name": "OpenMediaCenter",
|
||||||
|
"description": "API Documentation of OpenMediaCenter",
|
||||||
|
"title": "OpenMediaCenter Doc",
|
||||||
|
"sampleUrl": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user