bool GetEPGInfo(uint32_t period, 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_EPG_INFO; if (!sc_itv_defaults(¶ms)) { XBMC->Log(LOG_ERROR, "%s: sc_itv_defaults failed", __FUNCTION__); return false; } if ((param = sc_param_get(¶ms, "period"))) { param->value.integer = period; } 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; }
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; }
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; }
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; } }
void sc_request_set_missing_required(sc_param_request_t *dst_params, sc_param_request_t *src_params) { sc_param_t *src_param; sc_param_t *dst_param; src_param = src_params->param; while (src_param) { if (!(dst_param = sc_param_get(dst_params, src_param->name)) && src_param->required) { sc_param_t *copy = NULL; if ((copy = sc_param_copy(src_param))) { fprintf(stderr, "appending %s\n", src_param->name); sc_param_append(dst_params, copy); } } src_param = src_param->next; } }
void sc_request_remove_default_non_required(sc_param_request_t *dst_params, sc_param_request_t *src_params) { sc_param_t *src_param; sc_param_t *dst_param; src_param = src_params->param; while (src_param) { bool destroy = true; if ((dst_param = sc_param_get(dst_params, src_param->name))) { switch (src_param->type) { case SC_STRING: if (strcmp(dst_param->value.string, src_param->value.string) != 0) { free(dst_param->value.string); dst_param->value.string = 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(stderr, "destroying %s\n", dst_param->name); sc_param_destroy(dst_params, dst_param); } } src_param = src_param->next; } }