bool CreateLink(std::string &cmd, sc_identity_t *identity, Json::Value *parsed) { XBMC->Log(LOG_DEBUG, "%s", __FUNCTION__); sc_param_request_t params; sc_param_t *param; std::string resp_headers; std::string resp_body; memset(¶ms, 0, sizeof(params)); params.action = ITV_CREATE_LINK; if (!sc_itv_defaults(¶ms)) { XBMC->Log(LOG_ERROR, "%s: sc_itv_defaults failed", __FUNCTION__); return false; } if ((param = sc_param_get(¶ms, "cmd"))) { free(param->value.string); param->value.string = sc_util_strcpy((char *)cmd.c_str()); } if (!StalkerCall(identity, ¶ms, &resp_headers, &resp_body, parsed)) { sc_param_free_params(params.param); XBMC->Log(LOG_ERROR, "%s: api call failed", __FUNCTION__); return false; } sc_param_free_params(params.param); return true; }
sc_param_t *sc_param_create_string(const char *name, char *value, bool required) { sc_param_t *param; param = sc_param_create(name, SC_STRING, required); param->value.string = sc_util_strcpy(value); return param; }
bool sc_xmltv_get_reader_value(xmlTextReaderPtr reader, char **dst) { bool ret = false; xmlChar *val = xmlTextReaderValue(reader); if (val) { *dst = sc_util_strcpy((char *) val); ret = true; } xmlFree(val); return ret; }
sc_request_nameVal_t *sc_request_create_nameVal(const char *name, char *value) { sc_request_nameVal_t *header; header = (sc_request_nameVal_t *) malloc(sizeof(sc_request_nameVal_t)); header->name = name; header->value = sc_util_strcpy(value); header->first = NULL; header->prev = NULL; header->next = NULL; return header; }
void sc_request_remove_default_non_required(sc_param_params_t *dst_params, sc_param_params_t *src_params) { sc_list_node_t *node; sc_param_t *src_param; sc_list_node_t *dst_node; sc_param_t *dst_param; node = src_params->list->first; while (node) { src_param = (sc_param_t *) node->data; bool destroy = true; if ((dst_param = sc_param_get2(dst_params, src_param->name, &dst_node))) { switch (src_param->type) { case SC_STRING: if (strcmp(dst_param->value.string, src_param->value.string)) { free(dst_param->value.string); dst_param->value.string = sc_util_strcpy(src_param->value.string); destroy = false; } break; case SC_INTEGER: if (dst_param->value.integer != src_param->value.integer) { dst_param->value.integer = src_param->value.integer; destroy = false; } break; case SC_BOOLEAN: if (dst_param->value.boolean != src_param->value.boolean) { dst_param->value.boolean = src_param->value.boolean; destroy = false; } break; } if (!dst_param->required && destroy) { fprintf(stdout, "destroying %s\n", dst_param->name); sc_list_node_unlink(dst_params->list, dst_node); sc_param_free(&dst_param); sc_list_node_free(&dst_node, false); } } node = node->next; } }
sc_param_t *sc_param_copy(sc_param_t *param) { sc_param_t *copy; copy = sc_param_create(param->name, param->type, param->required); switch (param->type) { case SC_STRING: copy->value.string = sc_util_strcpy(param->value.string); break; case SC_INTEGER: copy->value.integer = param->value.integer; break; case SC_BOOLEAN: copy->value.boolean = param->value.boolean; break; } return copy; }
bool GetOrderedList(std::string &genre, uint32_t page, sc_identity_t *identity, Json::Value *parsed) { XBMC->Log(LOG_DEBUG, "%s", __FUNCTION__); sc_param_request_t params; sc_param_t *param; std::string resp_headers; std::string resp_body; memset(¶ms, 0, sizeof(params)); params.action = ITV_GET_ORDERED_LIST; if (!sc_itv_defaults(¶ms)) { XBMC->Log(LOG_ERROR, "%s: sc_itv_defaults failed", __FUNCTION__); return false; } if ((param = sc_param_get(¶ms, "genre"))) { free(param->value.string); param->value.string = sc_util_strcpy((char *)genre.c_str()); } if ((param = sc_param_get(¶ms, "p"))) { param->value.integer = page; } if (!StalkerCall(identity, ¶ms, &resp_headers, &resp_body, parsed)) { sc_param_free_params(params.param); XBMC->Log(LOG_ERROR, "%s: api call failed", __FUNCTION__); return false; } sc_param_free_params(params.param); return true; }