コード例 #1
0
ファイル: server.c プロジェクト: ebonical/spotify-api-server
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;
  }
}
コード例 #2
0
ファイル: spotifyuser.cpp プロジェクト: gitsly/QtSpotify
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;
}
コード例 #3
0
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;
}
コード例 #4
0
ファイル: session.c プロジェクト: bok/libmockspotify
sp_playlistcontainer *
sp_session_playlistcontainer(sp_session *session)
{
  return sp_session_publishedcontainer_for_user_create(session, NULL);
}