void soap_encode_arg(htsbuf_queue_t *xml, htsmsg_field_t *f) { switch(f->hmf_type) { case HMF_S64: htsbuf_qprintf(xml, "<%s>%"PRId64"</%s>", f->hmf_name, f->hmf_s64, f->hmf_name); break; case HMF_STR: if(f->hmf_str[0] == 0) { htsbuf_qprintf(xml, "<%s/>", f->hmf_name); break; } htsbuf_qprintf(xml, "<%s>", f->hmf_name); htsbuf_append_and_escape_xml(xml, f->hmf_str); htsbuf_qprintf(xml, "</%s>", f->hmf_name); break; default: break; } }
static char * build_didl(const char *myhost, int myport) { htsbuf_queue_t hq; htsbuf_queue_init(&hq, 0); htsbuf_qprintf(&hq, "<DIDL-Lite xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\" " "xmlns:dc=\"http://purl.org/dc/elements/1.1/\" " "xmlns:dlna=\"urn:schemas-dlna-org:metadata-1-0\" " "xmlns:pv=\"http://www.pv.com/pvns/\" " "xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\">" "<item id=\"101\" parentID=\"100\" restricted=\"0\">" "<upnp:class xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\">object.item.audioItem.musicTrack</upnp:class>"); if(upnp_current_title) { htsbuf_qprintf(&hq, "<dc:title xmlns:dc=\"http://purl.org/dc/elements/1.1/\">"); htsbuf_append_and_escape_xml(&hq, upnp_current_title); htsbuf_qprintf(&hq, "</dc:title>"); } if(upnp_current_artist) { htsbuf_qprintf(&hq, "<upnp:artist xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\">"); htsbuf_append_and_escape_xml(&hq, upnp_current_artist); htsbuf_qprintf(&hq, "</upnp:artist>"); } if(upnp_current_album) { htsbuf_qprintf(&hq, "<upnp:album xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\">"); htsbuf_append_and_escape_xml(&hq, upnp_current_album); htsbuf_qprintf(&hq, "</upnp:album>"); } if(upnp_current_album_art) { char url[URL_MAX]; const char *arturl; if(strncmp(upnp_current_album_art, "http://", strlen("http://"))) { snprintf(url, sizeof(url), "http://%s:%d/api/image/%s", myhost, myport, upnp_current_album_art); arturl = url; } else { arturl = upnp_current_album_art; } htsbuf_qprintf(&hq, "<upnp:albumArtURI xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\">"); htsbuf_append_and_escape_xml(&hq, arturl); htsbuf_qprintf(&hq, "</upnp:albumArtURI>"); } htsbuf_qprintf(&hq, "</item></DIDL-Lite>"); return htsbuf_to_string(&hq); }
struct tm tm; /* 20140817060000 +0200 */ strftime(dst, 32, "%Y%m%d%H%M%S %z", localtime_r(&t, &tm)); } /* * */ static void http_xmltv_begin(htsbuf_queue_t *hq) { htsbuf_append_str(hq, "\ <?xml version=\"1.0\" encoding=\"utf-8\" ?>\n\ <!DOCTYPE tv SYSTEM \"xmltv.dtd\">\n\ <tv generator-info-name=\"TVHeadend-"); htsbuf_append_and_escape_xml(hq, tvheadend_version); htsbuf_append_str(hq, "\" source-info-name=\"tvh-"); htsbuf_append_and_escape_xml(hq, config_get_server_name()); htsbuf_append_str(hq, "\">\n"); } /* * */ static void http_xmltv_end(htsbuf_queue_t *hq) { htsbuf_append_str(hq, "</tv>\n"); } /*