80 lines
1.8 KiB
Go
Raw Permalink Normal View History

package main
import (
"bytes"
_ "embed"
"fmt"
"net/http"
)
//go:embed library.json
var librarySetupPayload string
func SetupServer(server, password string) {
makeUrl := func(u string) string {
return fmt.Sprintf("%s/%s", server, u)
}
// Set the server language to English
sendRequest(
makeUrl("Startup/Configuration"),
"POST",
`{"UICulture":"en-US","MetadataCountryCode":"US","PreferredMetadataLanguage":"en"}`)
// Get the first user
sendRequest(makeUrl("Startup/User"), "GET", "")
// Create the first user
sendRequest(
makeUrl("Startup/User"),
"POST",
fmt.Sprintf(`{"Name":"admin","Password":"%s"}`, password))
// Create a TV library from the media at /media/TV.
sendRequest(
makeUrl("Library/VirtualFolders?collectionType=tvshows&refreshLibrary=false&name=Shows"),
"POST",
librarySetupPayload)
// Setup remote access
sendRequest(
makeUrl("Startup/RemoteAccess"),
"POST",
`{"EnableRemoteAccess":true,"EnableAutomaticPortMapping":false}`)
// Mark the wizard as complete
sendRequest(
makeUrl("Startup/Complete"),
"POST",
``)
}
func sendRequest(url string, method string, body string) {
// Create the request
req, err := http.NewRequest(method, url, bytes.NewBuffer([]byte(body)))
if err != nil {
panic(err)
}
// Set required headers
req.Header.Set("Content-Type", "application/json")
req.Header.Set(
"X-Emby-Authorization",
`MediaBrowser Client="JF E2E Tests", Version="0.0.1", DeviceId="E2E", Device="E2E"`)
// Send it
fmt.Printf(" [+] %s %s", method, url)
res, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Println()
panic(err)
}
fmt.Printf(" %d\n", res.StatusCode)
if res.StatusCode != http.StatusNoContent && res.StatusCode != http.StatusOK {
panic("invalid status code received during setup")
}
}