/**************************************** * cg_upnp_event_notify_request_setpropertysetnode ****************************************/ BOOL cg_upnp_event_notify_request_setpropertysetnode(CgUpnpNotifyRequest *notifyReq, CgUpnpSubscriber *sub, /* CgUpnpService */void *pservice, CgUpnpStateVariable *statVar) { CgHttpRequest *httpReq; CgXmlNode *propSetNode; CgUpnpService* service; char server[CG_UPNP_SEVERNAME_MAXLEN]; cg_log_debug_l4("Entering...\n"); service = (CgUpnpService *)pservice; httpReq = cg_soap_request_gethttprequest(notifyReq); cg_http_request_setmethod(httpReq, CG_HTTP_NOTIFY); cg_http_request_setconnection(httpReq, CG_HTTP_CLOSE); cg_http_request_seturi(httpReq, cg_upnp_subscriber_getdeliverypath(sub)); cg_http_request_sethost(httpReq, cg_upnp_subscriber_getdeliveryhost(sub), cg_upnp_subscriber_getdeliveryport(sub)); cg_upnp_getservername(server, sizeof(server)); cg_http_packet_setheadervalue((CgHttpPacket*)httpReq, CG_HTTP_SERVER, server); cg_upnp_event_notify_request_setnt(notifyReq, CG_UPNP_NT_EVENT); cg_upnp_event_notify_request_setnts(notifyReq, CG_UPNP_NTS_PROPCHANGE); cg_upnp_event_notify_request_setsid(notifyReq, cg_upnp_subscriber_getsid(sub)); cg_upnp_event_notify_request_setseq(notifyReq, cg_upnp_subscriber_getnotifycount(sub)); propSetNode = cg_upnp_event_notify_request_createpropertysetnode(service, statVar); cg_soap_request_setcontent(notifyReq, propSetNode); cg_xml_node_delete(propSetNode); cg_log_debug_l4("Leaving...\n"); return TRUE; }
BOOL cg_upnp_action_performlistner(CgUpnpAction *action, CgUpnpActionRequest *actionReq) { CG_UPNP_ACTION_LISTNER listener; CgUpnpActionResponse *actionRes; CgHttpRequest *actionReqHttpReq; CgHttpResponse *actionResHttpRes; cg_log_debug_l4("Entering...\n"); listener = cg_upnp_action_getlistner(action); if (listener == NULL) return FALSE; actionRes = cg_upnp_control_action_response_new(); cg_upnp_action_setstatuscode(action, CG_UPNP_STATUS_INVALID_ACTION); cg_upnp_action_setstatusdescription(action, cg_upnp_status_code2string(CG_UPNP_STATUS_INVALID_ACTION)); cg_upnp_action_clearoutputargumentvalues(action); if (listener(action) == TRUE) cg_upnp_control_action_response_setresponse(actionRes, action); else cg_upnp_control_soap_response_setfaultresponse(cg_upnp_control_action_response_getsoapresponse(actionRes), cg_upnp_action_getstatuscode(action), cg_upnp_action_getstatusdescription(action)); actionReqHttpReq = cg_soap_request_gethttprequest(cg_upnp_control_action_request_getsoaprequest(actionReq)); actionResHttpRes = cg_soap_response_gethttpresponse(cg_upnp_control_action_response_getsoapresponse(actionRes)); cg_http_request_postresponse(actionReqHttpReq, actionResHttpRes); cg_upnp_control_action_response_delete(actionRes); cg_log_debug_l4("Leaving...\n"); return TRUE; }
void cg_upnp_control_request_sethostfromservice(CgSoapRequest *soapReq, CgUpnpService *service) { CgHttpRequest *httpReq; CgNetURL *ctrlURL; cg_log_debug_l4("Entering...\n"); httpReq = cg_soap_request_gethttprequest(soapReq); ctrlURL = cg_upnp_service_getcontrolurl(service); cg_log_debug_s("Ctrl URL: %s - %d -%s", cg_net_url_gethost(ctrlURL), cg_net_url_getport(ctrlURL), cg_net_url_getpath(ctrlURL)); //cg_http_request_seturi(httpReq, cg_xml_node_getchildnodevalue(cg_upnp_service_getservicenode(service), CG_UPNP_SERVICE_CONTROL_URL)); cg_http_request_seturi(httpReq, cg_net_url_getrequest(ctrlURL)); /**** Host ****/ cg_net_url_delete(httpReq->postURL); httpReq->postURL = ctrlURL; cg_log_debug_s("Post URL: %s - %d -%s", cg_net_url_gethost(httpReq->postURL), cg_net_url_getport(httpReq->postURL), cg_net_url_getpath(httpReq->postURL)); cg_log_debug_l4("Leaving...\n"); }
void cg_upnp_control_soap_request_initializeenvelopenode(CgSoapRequest *soapReq) { CgXmlNodeList *rootNodeList; CgHttpRequest *httpReq; cg_log_debug_l4("Entering...\n"); rootNodeList = cg_soap_request_getrootnoodelist(soapReq); cg_xml_nodelist_add(rootNodeList, cg_soap_createenvelopebodynode()); httpReq = cg_soap_request_gethttprequest(soapReq); cg_http_request_setcontenttype(httpReq, CG_SOAP_CONTENT_TYPE); cg_log_debug_l4("Leaving...\n"); }
void cg_soap_request_setcontent(CgSoapRequest *soapReq, CgXmlNode *node) { CgHttpRequest *httpReq; cg_log_debug_l4("Entering...\n"); httpReq = cg_soap_request_gethttprequest(soapReq); /**** content type ****/ cg_http_request_setcontenttype(httpReq, CG_XML_CONTENT_TYPE); /**** content ****/ cg_http_request_appendncontent(httpReq, CG_SOAP_VERSION_HEADER, cg_strlen(CG_SOAP_VERSION_HEADER)); cg_http_request_appendncontent(httpReq, CG_XML_CONTENT_LF, cg_strlen(CG_XML_CONTENT_LF)); cg_xml_node_tostring(node, TRUE, httpReq->content); /**** content length ****/ cg_http_request_setcontentlength(httpReq, cg_string_length(httpReq->content)); cg_log_debug_l4("Leaving...\n"); }