bool sc_watchdog_get_events_defaults(sc_list_t *list) { sc_list_node_append(list, sc_list_node_create(sc_param_create_boolean("init", false, true))); sc_list_node_append(list, sc_list_node_create(sc_param_create_integer("cur_play_type", 0, true))); sc_list_node_append(list, sc_list_node_create(sc_param_create_integer("event_active_id", 0, true))); return true; }
bool sc_stb_do_auth_defaults(sc_list_t *list) { sc_list_node_append(list, sc_list_node_create(sc_param_create_string("login", "", true))); sc_list_node_append(list, sc_list_node_create(sc_param_create_string("password", "", true))); sc_list_node_append(list, sc_list_node_create(sc_param_create_string("device_id", "", false))); sc_list_node_append(list, sc_list_node_create(sc_param_create_string("device_id2", "", false))); return true; }
sc_list_t *sc_xmltv_parse(const char *filename) { xmlTextReaderPtr reader = NULL; sc_list_t *channels = NULL; sc_list_t *programmes = NULL; int ret; sc_list_node_t *node = NULL; reader = xmlNewTextReaderFilename(filename); if (!reader) return NULL; channels = sc_list_create(); programmes = sc_list_create(); for (ret = xmlTextReaderRead(reader); ret == 1; ret = xmlTextReaderRead(reader)) { if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, SC_XMLTV_CHANNEL_NAME, SC_XMLTV_CHANNEL_DEPTH)) { node = sc_list_node_create(sc_xmltv_parse_channel(reader)); sc_list_node_append(channels, node); } if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, SC_XMLTV_PROGRAMME_NAME, SC_XMLTV_PROGRAMME_DEPTH)) { node = sc_list_node_create(sc_xmltv_parse_programme(reader)); sc_list_node_append(programmes, node); } } xmlFreeTextReader(reader); node = channels->first; while (node) { sc_xmltv_link_progs_to_chan(programmes, (sc_xmltv_channel_t *) node->data); node = node->next; } sc_xmltv_list_free(SC_XMLTV_PROGRAMME, &programmes); return channels; }
void sc_xmltv_link_progs_to_chan(sc_list_t *programmes, sc_xmltv_channel_t *chan) { sc_list_node_t *node = programmes->first; sc_list_node_t *ulnode = NULL; while (node) { sc_xmltv_programme_t *prog = (sc_xmltv_programme_t *) node->data; if ((!strcmp(prog->channel, chan->id_))) { ulnode = node; node = sc_list_node_unlink(programmes, ulnode); sc_list_node_append(chan->programmes, ulnode); } else { node = node->next; } } }
void sc_request_set_missing_required(sc_param_params_t *dst_params, sc_param_params_t *src_params) { sc_list_node_t *node; sc_param_t *param; node = src_params->list->first; while (node) { param = (sc_param_t *) node->data; if (!sc_param_get(dst_params, param->name) && param->required) { fprintf(stdout, "appending %s\n", param->name); sc_param_t *copy = sc_param_copy(param); sc_list_node_append(dst_params->list, sc_list_node_create(copy)); } node = node->next; } }
sc_xmltv_channel_t *sc_xmltv_parse_channel(xmlTextReaderPtr reader) { sc_xmltv_channel_t *chan = NULL; int ret; chan = (sc_xmltv_channel_t *) sc_xmltv_create(SC_XMLTV_CHANNEL); sc_xmltv_get_reader_property_value(reader, "id", &chan->id_); for (ret = xmlTextReaderRead(reader); ret == 1; ret = xmlTextReaderRead(reader)) { if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_END_ELEMENT, SC_XMLTV_CHANNEL_NAME, SC_XMLTV_CHANNEL_DEPTH)) { break; } if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "display-name", SC_XMLTV_CHANNEL_DEPTH + 1)) { sc_list_node_t *node = sc_list_node_create(NULL); sc_xmltv_get_reader_element_value(reader, (char **) (&node->data)); sc_list_node_append(chan->display_names, node); // node = NULL; } } return chan; }
void sc_xmltv_parse_credits(xmlTextReaderPtr reader, sc_list_t **list) { sc_xmltv_credit_t *cred = NULL; int ret; xmlChar *val; sc_xmltv_credit_type_t type; sc_list_node_t *node = NULL; for (ret = xmlTextReaderRead(reader); ret == 1; ret = xmlTextReaderRead(reader)) { if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_END_ELEMENT, SC_XMLTV_CREDIT_NAME, SC_XMLTV_CREDIT_DEPTH)) { break; } val = xmlTextReaderName(reader); type = SC_XMLTV_CREDIT_TYPE_UNKNOWN; if ((!xmlStrcmp(val, (const xmlChar *) "actor"))) type = SC_XMLTV_CREDIT_TYPE_ACTOR; if ((!xmlStrcmp(val, (const xmlChar *) "director"))) type = SC_XMLTV_CREDIT_TYPE_DIRECTOR; if ((!xmlStrcmp(val, (const xmlChar *) "guest"))) type = SC_XMLTV_CREDIT_TYPE_GUEST; if ((!xmlStrcmp(val, (const xmlChar *) "presenter"))) type = SC_XMLTV_CREDIT_TYPE_PRESENTER; if ((!xmlStrcmp(val, (const xmlChar *) "producer"))) type = SC_XMLTV_CREDIT_TYPE_PRODUCER; if ((!xmlStrcmp(val, (const xmlChar *) "writer"))) type = SC_XMLTV_CREDIT_TYPE_WRITER; xmlFree(val); if (!xmlTextReaderIsEmptyElement(reader) && xmlTextReaderNodeType(reader) == XML_READER_TYPE_ELEMENT && type > 0 && xmlTextReaderDepth(reader) == SC_XMLTV_CREDIT_DEPTH + 1) { cred = (sc_xmltv_credit_t *) sc_xmltv_create(SC_XMLTV_CREDIT); cred->type = type; sc_xmltv_get_reader_element_value(reader, &cred->name); node = sc_list_node_create(cred); sc_list_node_append(*list, node); } } // node = NULL; }
sc_xmltv_programme_t *sc_xmltv_parse_programme(xmlTextReaderPtr reader) { sc_xmltv_programme_t *prog = NULL; char *val = NULL; int ret; prog = (sc_xmltv_programme_t *) sc_xmltv_create(SC_XMLTV_PROGRAMME); sc_xmltv_get_reader_property_value(reader, "start", &val); prog->start = sc_xmltv_to_unix_time(val); free(val); val = NULL; sc_xmltv_get_reader_property_value(reader, "stop", &val); prog->stop = sc_xmltv_to_unix_time(val); free(val); val = NULL; sc_xmltv_get_reader_property_value(reader, "channel", &prog->channel); for (ret = xmlTextReaderRead(reader); ret == 1; ret = xmlTextReaderRead(reader)) { if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_END_ELEMENT, SC_XMLTV_PROGRAMME_NAME, SC_XMLTV_PROGRAMME_DEPTH)) { break; } if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "title", SC_XMLTV_PROGRAMME_DEPTH + 1)) { sc_xmltv_get_reader_element_value(reader, &prog->title); } if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "sub-title", SC_XMLTV_PROGRAMME_DEPTH + 1)) { sc_xmltv_get_reader_element_value(reader, &prog->sub_title); } if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "desc", SC_XMLTV_PROGRAMME_DEPTH + 1)) { sc_xmltv_get_reader_element_value(reader, &prog->desc); } if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "credits", SC_XMLTV_PROGRAMME_DEPTH + 1)) { sc_xmltv_parse_credits(reader, &prog->credits); } if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "date", SC_XMLTV_PROGRAMME_DEPTH + 1)) { sc_xmltv_get_reader_element_value(reader, &prog->date); } if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "category", SC_XMLTV_PROGRAMME_DEPTH + 1)) { sc_list_node_t *node = sc_list_node_create(NULL); sc_xmltv_get_reader_element_value(reader, (char **) (&node->data)); sc_list_node_append(prog->categories, node); // node = NULL; } if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "episode-num", SC_XMLTV_PROGRAMME_DEPTH + 1)) { sc_xmltv_get_reader_property_value(reader, "system", &val); if (val && (!strcmp(val, "onscreen"))) { free(val); val = NULL; sc_xmltv_get_reader_element_value(reader, &val); uintmax_t num = strtoumax((const char *) val, NULL, 10); if (errno != ERANGE) { prog->episode_num = (int) num; } } free(val); val = NULL; } if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "previously-shown", SC_XMLTV_PROGRAMME_DEPTH + 1)) { sc_xmltv_get_reader_property_value(reader, "start", &val); prog->start = sc_xmltv_to_unix_time(val); free(val); val = NULL; } if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "star-rating", SC_XMLTV_PROGRAMME_DEPTH + 1)) { int iret; for (iret = xmlTextReaderRead(reader); iret == 1; iret = xmlTextReaderRead(reader)) { if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_END_ELEMENT, "star-rating", SC_XMLTV_PROGRAMME_DEPTH + 1)) { break; } xmlChar *ival = xmlTextReaderName(reader); if ((!xmlStrcmp(ival, (const xmlChar *) "value"))) { sc_xmltv_get_reader_element_value(reader, &prog->star_rating); } xmlFree(ival); } } if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "icon", SC_XMLTV_PROGRAMME_DEPTH + 1)) { sc_xmltv_get_reader_property_value(reader, "src", &prog->icon); } } return prog; }
bool sc_stb_get_profile_defaults(sc_list_t *list) { sc_list_node_append(list, sc_list_node_create(sc_param_create_string("stb_type", "MAG250", true))); sc_list_node_append(list, sc_list_node_create(sc_param_create_string("sn", "0000000000000", true))); sc_list_node_append(list, sc_list_node_create( sc_param_create_string("ver", "ImageDescription: 0.2.16-250; " "ImageDate: 18 Mar 2013 19:56:53 GMT+0200; " "PORTAL version: 4.9.9; " "API Version: JS API version: 328; " "STB API version: 134; " "Player Engine version: 0x566", true))); sc_list_node_append(list, sc_list_node_create(sc_param_create_string("device_id", "", false))); sc_list_node_append(list, sc_list_node_create(sc_param_create_string("device_id2", "", false))); sc_list_node_append(list, sc_list_node_create(sc_param_create_string("signature", "", false))); sc_list_node_append(list, sc_list_node_create(sc_param_create_boolean("not_valid_token", false, true))); sc_list_node_append(list, sc_list_node_create(sc_param_create_boolean("auth_second_step", false, true))); sc_list_node_append(list, sc_list_node_create(sc_param_create_boolean("hd", true, true))); sc_list_node_append(list, sc_list_node_create(sc_param_create_integer("num_banks", 1, true))); sc_list_node_append(list, sc_list_node_create(sc_param_create_integer("image_version", 216, true))); sc_list_node_append(list, sc_list_node_create(sc_param_create_string("hw_version", "1.7-BD-00", true))); return true; }
bool sc_stb_handshake_defaults(sc_list_t *list) { sc_list_node_append(list, sc_list_node_create(sc_param_create_string("token", "", false))); return true; }