static VALUE rb_ds_playlist_new (VALUE self, VALUE sessionv, VALUE id) { rb_ds_session *session; rb_ds_playlist *pls; ds_playlist_t *pl; char *playlist_id; VALUE2PLAYLIST(self, pls); VALUE2SESSION(sessionv, session); playlist_id = StringValuePtr(id); if (strlen(playlist_id) != 34) return Qnil; pl = despotify_get_playlist(session->real, playlist_id); if (!pl) return Qnil; pls->real = pl; pls->ischild = false; rb_iv_set(self, "session", sessionv); if (rb_block_given_p()) rb_yield(self); return self; }
static VALUE rb_ds_session_play_playlist (VALUE self, VALUE playlist) { SESSION_METHOD_HEADER rb_ds_playlist *pl; VALUE2PLAYLIST(playlist, pl); return BOOL2VALUE(despotify_play(session->real, pl->real->tracks, true)); }
VALUE PLAYLIST2VALUE (VALUE session, ds_playlist_t *pl, bool ischild) { rb_ds_playlist *pls; VALUE obj; if (!pl) return Qnil; obj = rb_ds_playlist_alloc(cPlaylist); VALUE2PLAYLIST(obj, pls); pls->real = pl; pls->ischild = ischild; rb_iv_set(obj, "session", session); return obj; }