bool sc_stb_prep_request(sc_param_params_t *params, sc_request_t *request) { sc_request_nameVal_t *paramPrev; sc_request_nameVal_t *param; paramPrev = request->params; while (paramPrev && paramPrev->next) paramPrev = paramPrev->next; param = sc_request_create_nameVal("type", "stb"); if (!paramPrev) { param->first = param; request->params = paramPrev = param; } else { paramPrev = sc_request_link_nameVal(paramPrev, param); } switch (params->action) { case STB_HANDSHAKE: sc_request_link_nameVal(paramPrev, sc_request_create_nameVal("action", "handshake")); break; case STB_GET_PROFILE: sc_request_link_nameVal(paramPrev, sc_request_create_nameVal("action", "get_profile")); break; case STB_DO_AUTH: sc_request_link_nameVal(paramPrev, sc_request_create_nameVal("action", "do_auth")); break; default: break; } request->method = "GET"; return true; }
bool sc_watchdog_prep_request(sc_param_request_t *params, sc_request_t *request) { sc_request_nameVal_t *paramPrev; sc_request_nameVal_t *param; paramPrev = request->params; while (paramPrev && paramPrev->next) paramPrev = paramPrev->next; param = sc_request_create_nameVal("type", "watchdog"); if (!paramPrev) { param->first = param; request->params = paramPrev = param; } else { paramPrev = sc_request_link_nameVal(paramPrev, param); } switch (params->action) { case WATCHDOG_GET_EVENTS: sc_request_link_nameVal(paramPrev, sc_request_create_nameVal("action", "get_events")); break; } request->method = "GET"; paramPrev = NULL; param = NULL; return true; }
void sc_request_append_nameVal(sc_request_nameVal_t **first, sc_request_nameVal_t *nameVal) { sc_request_nameVal_t *last; last = *first; if (!last) { nameVal->first = nameVal; *first = nameVal; } else { while (last && last->next) last = last->next; sc_request_link_nameVal(last, nameVal); } nameVal->next = NULL; }
void sc_request_append_nameVal(sc_request_t *request, sc_request_nameVal_t *header) { sc_request_nameVal_t *oheader; if (!request->headers) { request->headers = header; } else { oheader = request->headers; while (oheader && oheader->next) { oheader = oheader->next; } sc_request_link_nameVal(oheader, header); } header->next = NULL; }
void sc_request_build_headers(sc_identity_t *identity, sc_request_t *request, sc_action_t action) { sc_request_nameVal_t *header; char buffer[256]; memset(&buffer, 0, sizeof (buffer)); sprintf(buffer, "mac=%s; stb_lang=%s; timezone=%s", identity->mac, identity->lang, identity->time_zone); header = sc_request_create_nameVal("Cookie", buffer); if (!request->headers) header->first = header; sc_request_append_nameVal(request, header); if (action != STB_HANDSHAKE) { memset(&buffer, 0, sizeof (buffer)); sprintf(buffer, "Bearer %s", identity->token); sc_request_link_nameVal(header, sc_request_create_nameVal("Authorization", buffer)); } header = NULL; }
void sc_request_build_query_params(sc_param_request_t *params, sc_request_t *request) { sc_param_t *param; char buffer[1024]; sc_request_nameVal_t *qParamPrev; sc_request_nameVal_t *qParam; qParamPrev = request->params; while (qParamPrev && qParamPrev->next) qParamPrev = qParamPrev->next; param = params->param; while (param) { memset(&buffer, 0, sizeof (buffer)); switch (param->type) { case SC_STRING: sprintf(buffer, "%s", param->value.string); break; case SC_INTEGER: sprintf(buffer, "%d", param->value.integer); break; case SC_BOOLEAN: sprintf(buffer, "%d", param->value.boolean ? 1 : 0); break; } qParam = sc_request_create_nameVal(param->name, buffer); if (!request->params) { qParam->first = qParam; request->params = qParamPrev = qParam; } else { qParamPrev = sc_request_link_nameVal(qParamPrev, qParam); } param = param->next; } qParamPrev->next = NULL; }
bool sc_itv_prep_request(sc_param_request_t *params, sc_request_t *request) { sc_request_nameVal_t *paramPrev; sc_request_nameVal_t *param; paramPrev = request->params; while (paramPrev && paramPrev->next) paramPrev = paramPrev->next; param = sc_request_create_nameVal("type", "itv"); if (!paramPrev) { param->first = param; request->params = paramPrev = param; } else { paramPrev = sc_request_link_nameVal(paramPrev, param); } switch (params->action) { case ITV_GET_ALL_CHANNELS: sc_request_link_nameVal(paramPrev, sc_request_create_nameVal("action", "get_all_channels")); break; case ITV_GET_ORDERED_LIST: sc_request_link_nameVal(paramPrev, sc_request_create_nameVal("action", "get_ordered_list")); break; case ITV_CREATE_LINK: sc_request_link_nameVal(paramPrev, sc_request_create_nameVal("action", "create_link")); break; case ITV_GET_GENRES: sc_request_link_nameVal(paramPrev, sc_request_create_nameVal("action", "get_genres")); break; case ITV_GET_EPG_INFO: sc_request_link_nameVal(paramPrev, sc_request_create_nameVal("action", "get_epg_info")); break; } request->method = "GET"; paramPrev = NULL; param = NULL; return true; }