Class: Rockbox::Api::SavedPlaylists
- Inherits:
-
Object
- Object
- Rockbox::Api::SavedPlaylists
- Defined in:
- lib/rockbox/api/saved_playlists.rb
Defined Under Namespace
Classes: CreateBuilder
Instance Method Summary collapse
- #add_tracks(playlist_id, track_ids) ⇒ Object
- #create(name:, description: nil, image: nil, folder_id: nil, track_ids: nil) {|builder| ... } ⇒ Object
- #create_folder(name) ⇒ Object
- #delete(id) ⇒ Object
- #delete_folder(id) ⇒ Object
-
#folders ⇒ Object
——————————————————————— Folders ———————————————————————.
- #get(id) ⇒ Object
-
#initialize(http) ⇒ SavedPlaylists
constructor
A new instance of SavedPlaylists.
- #list(folder_id: nil) ⇒ Object
- #play(playlist_id) ⇒ Object
- #remove_track(playlist_id, track_id) ⇒ Object
- #track_ids(playlist_id) ⇒ Object
- #update(id, name:, description: nil, image: nil, folder_id: nil) ⇒ Object
Constructor Details
#initialize(http) ⇒ SavedPlaylists
Returns a new instance of SavedPlaylists.
8 9 10 |
# File 'lib/rockbox/api/saved_playlists.rb', line 8 def initialize(http) @http = http end |
Instance Method Details
#add_tracks(playlist_id, track_ids) ⇒ Object
87 88 89 90 91 92 93 94 |
# File 'lib/rockbox/api/saved_playlists.rb', line 87 def add_tracks(playlist_id, track_ids) @http.execute( "mutation AddTracksToSavedPlaylist($playlistId: String!, $trackIds: [String!]!) { " \ "addTracksToSavedPlaylist(playlistId: $playlistId, trackIds: $trackIds) }", { playlist_id: playlist_id, track_ids: track_ids } ) nil end |
#create(name:, description: nil, image: nil, folder_id: nil, track_ids: nil) {|builder| ... } ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/rockbox/api/saved_playlists.rb', line 42 def create(name:, description: nil, image: nil, folder_id: nil, track_ids: nil) builder = CreateBuilder.new(name, description, image, folder_id, track_ids) yield builder if block_given? data = @http.execute(<<~GQL, builder.to_variables) mutation CreateSavedPlaylist( $name: String!, $description: String, $image: String, $folderId: String, $trackIds: [String!] ) { createSavedPlaylist( name: $name, description: $description, image: $image, folderId: $folderId, trackIds: $trackIds ) { id name description image folderId trackCount createdAt updatedAt } } GQL SavedPlaylist.from_hash(data[:create_saved_playlist]) end |
#create_folder(name) ⇒ Object
122 123 124 125 126 127 128 129 |
# File 'lib/rockbox/api/saved_playlists.rb', line 122 def create_folder(name) data = @http.execute( "mutation CreatePlaylistFolder($name: String!) { " \ "createPlaylistFolder(name: $name) { id name createdAt updatedAt } }", { name: name } ) SavedPlaylistFolder.from_hash(data[:create_playlist_folder]) end |
#delete(id) ⇒ Object
79 80 81 82 83 84 85 |
# File 'lib/rockbox/api/saved_playlists.rb', line 79 def delete(id) @http.execute( "mutation DeleteSavedPlaylist($id: String!) { deleteSavedPlaylist(id: $id) }", { id: id } ) nil end |
#delete_folder(id) ⇒ Object
131 132 133 134 135 136 137 |
# File 'lib/rockbox/api/saved_playlists.rb', line 131 def delete_folder(id) @http.execute( "mutation DeletePlaylistFolder($id: String!) { deletePlaylistFolder(id: $id) }", { id: id } ) nil end |
#folders ⇒ Object
Folders
117 118 119 120 |
# File 'lib/rockbox/api/saved_playlists.rb', line 117 def folders data = @http.execute("query PlaylistFolders { playlistFolders { id name createdAt updatedAt } }") Array(data[:playlist_folders]).map { |f| SavedPlaylistFolder.from_hash(f) } end |
#get(id) ⇒ Object
21 22 23 24 25 26 27 28 |
# File 'lib/rockbox/api/saved_playlists.rb', line 21 def get(id) data = @http.execute( "query SavedPlaylist($id: String!) { " \ "savedPlaylist(id: $id) { id name description image folderId trackCount createdAt updatedAt } }", { id: id } ) SavedPlaylist.from_hash(data[:saved_playlist]) end |
#list(folder_id: nil) ⇒ Object
12 13 14 15 16 17 18 19 |
# File 'lib/rockbox/api/saved_playlists.rb', line 12 def list(folder_id: nil) data = @http.execute( "query SavedPlaylists($folderId: String) { " \ "savedPlaylists(folderId: $folderId) { id name description image folderId trackCount createdAt updatedAt } }", { folder_id: folder_id }.compact ) Array(data[:saved_playlists]).map { |p| SavedPlaylist.from_hash(p) } end |
#play(playlist_id) ⇒ Object
105 106 107 108 109 110 111 |
# File 'lib/rockbox/api/saved_playlists.rb', line 105 def play(playlist_id) @http.execute( "mutation PlaySavedPlaylist($playlistId: String!) { playSavedPlaylist(playlistId: $playlistId) }", { playlist_id: playlist_id } ) nil end |
#remove_track(playlist_id, track_id) ⇒ Object
96 97 98 99 100 101 102 103 |
# File 'lib/rockbox/api/saved_playlists.rb', line 96 def remove_track(playlist_id, track_id) @http.execute( "mutation RemoveTrackFromSavedPlaylist($playlistId: String!, $trackId: String!) { " \ "removeTrackFromSavedPlaylist(playlistId: $playlistId, trackId: $trackId) }", { playlist_id: playlist_id, track_id: track_id } ) nil end |
#track_ids(playlist_id) ⇒ Object
30 31 32 33 34 35 |
# File 'lib/rockbox/api/saved_playlists.rb', line 30 def track_ids(playlist_id) @http.execute( "query SavedPlaylistTrackIds($playlistId: String!) { savedPlaylistTrackIds(playlistId: $playlistId) }", { playlist_id: playlist_id } )[:saved_playlist_track_ids] || [] end |
#update(id, name:, description: nil, image: nil, folder_id: nil) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/rockbox/api/saved_playlists.rb', line 64 def update(id, name:, description: nil, image: nil, folder_id: nil) @http.execute(<<~GQL, { id: id, name: name, description: description, image: image, folder_id: folder_id }.compact) mutation UpdateSavedPlaylist( $id: String!, $name: String!, $description: String, $image: String, $folderId: String ) { updateSavedPlaylist( id: $id, name: $name, description: $description, image: $image, folderId: $folderId ) } GQL nil end |