static void put_user_inbox(const char *user, struct evhttp_request *request, void *userdata) { json_error_t loads_error; json_t *json = read_request_body_json(request, &loads_error); if (json == NULL) { send_error(request, HTTP_BADREQUEST, loads_error.text ? loads_error.text : "Unable to parse JSON"); return; } if (!json_is_object(json)) { json_decref(json); send_error(request, HTTP_BADREQUEST, "Not valid JSON object"); return; } json_t *tracks_json = json_object_get(json, "tracks"); if (!json_is_array(tracks_json)) { json_decref(tracks_json); send_error(request, HTTP_BADREQUEST, "tracks is not valid JSON array"); return; } // Handle empty array int num_tracks = json_array_size(tracks_json); if (num_tracks == 0) { send_reply(request, HTTP_OK, "OK", NULL); return; } sp_track **tracks = calloc(num_tracks, sizeof (sp_track *)); int num_valid_tracks = json_to_tracks(tracks_json, tracks, num_tracks); if (num_valid_tracks == 0) { send_error(request, HTTP_BADREQUEST, "No valid tracks"); } else { json_t *message_json = json_object_get(json, "message"); sp_session *session = userdata; sp_inbox *inbox = sp_inbox_post_tracks(session, user, tracks, num_valid_tracks, json_is_string(message_json) ? json_string_value(message_json) : "", &inbox_post_complete, request); if (inbox == NULL) send_error(request, HTTP_ERROR, "Failed to initialize request to add tracks to user's inbox"); } json_decref(json); free(tracks); }
static void albumbrowser_callback(sp_albumbrowse *result, void *userdata) { int i; for (i = 0; i < sp_albumbrowse_num_tracks(result); ++i) { sp_track *track; track = sp_albumbrowse_track(result,i); //printf("%s\n",sp_track_name(track)); sp_track * tracks[1]; tracks[0] = track; inboxpost_complete_cb *ipc; ipc = inbox_post_callback; sp_inbox_post_tracks(g_sess, g_user,tracks, 1, "Update from Subscribify.se", ipc, NULL); //I have to to do this because the callback doesnt work sleep(5); exit(0); } }