Esempio n. 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;
  }
Esempio n. 2
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;
  }
Esempio n. 3
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;
  }
Esempio n. 4
0
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;
    }
}
Esempio n. 5
0
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;
  }
}
Esempio n. 6
0
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;
  }
}