package subsonic

import (
	"encoding/xml"
	"net/http"
)

// PingResponse is envelope-only; clients treat any ok response as success.
type PingResponse struct {
	Envelope
}

func handlePing(w http.ResponseWriter, r *http.Request) {
	Write(w, r, PingResponse{Envelope: NewEnvelope("ok")})
}

// LicenseResponse reports the (always-valid) self-hosted license. Many
// Subsonic clients refuse to stream until this endpoint returns valid=true.
type LicenseResponse struct {
	Envelope
	License License `json:"license" xml:"license"`
}

type License struct {
	XMLName xml.Name `json:"-" xml:"license"`
	Valid   bool     `json:"valid" xml:"valid,attr"`
}

func handleGetLicense(w http.ResponseWriter, r *http.Request) {
	Write(w, r, LicenseResponse{
		Envelope: NewEnvelope("ok"),
		License:  License{Valid: true},
	})
}
