Esempio n. 1
0
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);
}
Esempio n. 2
0
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);
        
    }
}