func (me *Server) soapActionResponse(sa upnp.SoapAction, actionRequestXML []byte, r *http.Request) (map[string]string, error) {
	service, ok := me.services[sa.Type]
	if !ok {
		// TODO: What's the invalid service error?!
		return nil, upnp.Errorf(upnp.InvalidActionErrorCode, "Invalid service: %s", sa.Type)
	}

	logger.Tracef("%s::Handle %s - %s", sa.Type, sa.Action, actionRequestXML)
	ret, err := service.Handle(sa.Action, actionRequestXML, r)
	if err == nil {
		logger.Tracef("< %v", ret)
	}

	return ret, err
}
// Handle a SOAP request and return the response arguments or UPnP error.
Handle a SOAP request and return the response arguments or UPnP error.
// Handle a SOAP request and return the response arguments or UPnP error .
func (me *Server) soapActionResponse(sa upnp.SoapAction, actionRequestXML []byte, r *http.Request) (map[string]string, error) {
	service, ok := me.services[sa.Type]
	if !ok {
		return nil, upnp.Errorf(upnp.InvalidActionErrorCode, "Invalid service: %s", sa.Type)
	}
	logger.Tracef("%s::Handle %s - %s", sa.Type, sa.Action, actionRequestXML)
	ret, err := service.Handle(sa.Action, actionRequestXML, r)
	if err == nil {
		logger.Tracef("< %v", ret)
	}
	return ret, err
}
func ( me * Server ) soapActionResponse ( sa upnp . SoapAction , actionRequestXML [ ] byte , r * http . Request ) ( map [ string ] string , error ) { service , ok := me . services [ sa . Type ] if ! ok { return nil , upnp . Errorf ( upnp . InvalidActionErrorCode , " " , sa . Type ) } logger . Tracef ( " " , sa . Type , sa . Action , actionRequestXML ) ret , err := service . Handle ( sa . Action , actionRequestXML , r ) if err == nil { logger . Tracef ( " " , ret ) } return ret , err }
Handle a SOAP request and return the response arguments or UPnP error.
Handle a SOAP request and return the response arguments or UPnP error .
// TODO: What's the invalid service error?!