bool Handshake(sc_identity_t *identity, Json::Value *parsed) { XBMC->Log(LOG_DEBUG, "%s", __FUNCTION__); sc_param_request_t params; std::string resp_headers; std::string resp_body; memset(¶ms, 0, sizeof(params)); params.action = STB_HANDSHAKE; if (!sc_stb_defaults(¶ms)) { XBMC->Log(LOG_ERROR, "%s: sc_stb_defaults failed", __FUNCTION__); return false; } 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; } g_token = (*parsed)["js"]["token"].asString(); XBMC->Log(LOG_DEBUG, "token: %s", g_token.c_str()); sc_param_free_params(params.param); return true; }
bool GetProfile(sc_identity_t *identity, Json::Value *parsed) { XBMC->Log(LOG_DEBUG, "%s", __FUNCTION__); sc_param_request_t params; std::string resp_headers; std::string resp_body; memset(¶ms, 0, sizeof(params)); params.action = STB_GET_PROFILE; if (!sc_stb_defaults(¶ms)) { XBMC->Log(LOG_ERROR, "%s: sc_stb_defaults failed", __FUNCTION__); return false; } 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 sc_request_build(sc_identity_t *identity, sc_param_request_t *params, sc_request_t *request) { sc_param_request_t *final_params; bool result = true; final_params = (sc_param_request_t *) malloc(sizeof (sc_param_request_t)); memset(final_params, 0, sizeof (*final_params)); final_params->action = params->action; switch (final_params->action) { case STB_HANDSHAKE: case STB_GET_PROFILE: case STB_DO_AUTH: if (!sc_stb_defaults(final_params) || !sc_stb_prep_request(params, request)) result = false; break; case ITV_GET_ALL_CHANNELS: case ITV_GET_ORDERED_LIST: case ITV_CREATE_LINK: case ITV_GET_GENRES: case ITV_GET_EPG_INFO: if (!sc_itv_defaults(final_params) || !sc_itv_prep_request(params, request)) result = false; break; case WATCHDOG_GET_EVENTS: if (!sc_watchdog_defaults(final_params) || !sc_watchdog_prep_request(params, request)) result = false; break; } if (result) { sc_request_set_missing_required(params, final_params); sc_request_remove_default_non_required(final_params, params); sc_request_build_headers(identity, request, final_params->action); sc_request_build_query_params(final_params, request); } free(final_params); final_params = NULL; return result; }