package httphandlers

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

	"github.com/fiskerinc/cloud-services/pkg/validator"
	"github.com/pkg/errors"
)

func ParseRequest(r *http.Request, data interface{}) error {
	err := json.NewDecoder(r.Body).Decode(data)
	if err != nil {
		return errors.WithStack(err)
	}

	return errors.Wrapf(validator.ValidateStruct(data), "request %v", data)
}

func ParseXMLRequest(r *http.Request, data interface{}) error {
	err := xml.NewDecoder(r.Body).Decode(data)
	if err != nil {
		return errors.WithStack(err)
	}

	return errors.Wrapf(validator.ValidateStruct(data), "request %v", data)
}
