Beispiel #1
0
  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(&params, 0, sizeof(params));
    params.action = ITV_GET_EPG_INFO;

    if (!sc_itv_defaults(&params)) {
      XBMC->Log(LOG_ERROR, "%s: sc_itv_defaults failed", __FUNCTION__);
      return false;
    }

    if ((param = sc_param_get(&params, "period"))) {
      param->value.integer = period;
    }

    if (!StalkerCall(identity, &params, &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;
  }
Beispiel #2
0
  bool GetGenres(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(&params, 0, sizeof(params));
    params.action = ITV_GET_GENRES;

    if (!sc_itv_defaults(&params)) {
      XBMC->Log(LOG_ERROR, "%s: sc_itv_defaults failed", __FUNCTION__);
      return false;
    }

    if (!StalkerCall(identity, &params, &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;
  }
Beispiel #3
0
  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(&params, 0, sizeof(params));
    params.action = ITV_CREATE_LINK;

    if (!sc_itv_defaults(&params)) {
      XBMC->Log(LOG_ERROR, "%s: sc_itv_defaults failed", __FUNCTION__);
      return false;
    }

    if ((param = sc_param_get(&params, "cmd"))) {
      free(param->value.string);
      param->value.string = sc_util_strcpy((char *)cmd.c_str());
    }

    if (!StalkerCall(identity, &params, &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;
  }
Beispiel #4
0
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;
}
Beispiel #5
0
  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(&params, 0, sizeof(params));
    params.action = ITV_GET_ORDERED_LIST;

    if (!sc_itv_defaults(&params)) {
      XBMC->Log(LOG_ERROR, "%s: sc_itv_defaults failed", __FUNCTION__);
      return false;
    }

    if ((param = sc_param_get(&params, "genre"))) {
      free(param->value.string);
      param->value.string = sc_util_strcpy((char *)genre.c_str());
    }

    if ((param = sc_param_get(&params, "p"))) {
      param->value.integer = page;
    }

    if (!StalkerCall(identity, &params, &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;
  }