Example #1
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;
  }
Example #2
0
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;
}
Example #3
0
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;
}
Example #4
0
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;
}
Example #5
0
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;
    }
}
Example #6
0
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;
}
Example #7
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;
  }