static void handle_user_request(struct evhttp_request *request, char *action, const char *canonical_username, sp_session *session) { if (action == NULL) { evhttp_send_error(request, HTTP_BADREQUEST, "Bad Request"); return; } int http_method = evhttp_request_get_command(request); switch (http_method) { case EVHTTP_REQ_GET: if (strncmp(action, "playlists", 9) == 0) { sp_playlistcontainer *pc = sp_session_publishedcontainer_for_user_create( session, canonical_username); if (sp_playlistcontainer_is_loaded(pc)) { get_user_playlists(pc, request, session); } else { register_playlistcontainer_callbacks(pc, request, &get_user_playlists, &playlistcontainer_loaded_callbacks, session); } } else if (strncmp(action, "starred", 7) == 0) { sp_playlist *playlist = sp_session_starred_for_user_create(session, canonical_username); if (sp_playlist_is_loaded(playlist)) { get_playlist(playlist, request, session); } else { register_playlist_callbacks(playlist, request, &get_playlist, &playlist_state_changed_callbacks, session); } } break; case EVHTTP_REQ_PUT: case EVHTTP_REQ_POST: if (strncmp(action, "inbox", 5) == 0) { put_user_inbox(canonical_username, request, session); } break; default: evhttp_send_error(request, HTTP_BADREQUEST, "Bad Request"); break; } }
SpotifyPlaylistContainer* SpotifyUser::playlistContainer() { if(m_playlistContainer == nullptr) { sp_playlistcontainer* pc; if(SpotifySession::instance()->user() == this) { pc = sp_session_playlistcontainer(SpotifySession::instance()->native()); sp_playlistcontainer_add_ref(pc); } else { pc = sp_session_publishedcontainer_for_user_create(SpotifySession::instance()->native(), m_canonicalName.toUtf8().constData()); } m_playlistContainer = new SpotifyPlaylistContainer(pc); } return m_playlistContainer; }
QSpotifyPlaylistContainer *QSpotifyUser::playlistContainer() const { if (!m_playlistContainer) { sp_playlistcontainer *pc; if (QSpotifySession::instance()->user() == this) { pc = sp_session_playlistcontainer(QSpotifySession::instance()->m_sp_session); sp_playlistcontainer_add_ref(pc); } else { pc = sp_session_publishedcontainer_for_user_create(QSpotifySession::instance()->m_sp_session, m_canonicalName.toUtf8().constData()); } m_playlistContainer = new QSpotifyPlaylistContainer(pc); m_playlistContainer->init(); connect(m_playlistContainer, SIGNAL(playlistContainerDataChanged()), this, SIGNAL(playlistsChanged())); connect(m_playlistContainer, SIGNAL(playlistsNameChanged()), this, SIGNAL(playlistsNameChanged())); } return m_playlistContainer; }
sp_playlistcontainer * sp_session_playlistcontainer(sp_session *session) { return sp_session_publishedcontainer_for_user_create(session, NULL); }