Skip to content

Commit

Permalink
Merge pull request #135 from SantiagoParraGuerrero/SpotifyApp_130
Browse files Browse the repository at this point in the history
-#130 Show in the playlist all tracks duration
  • Loading branch information
nicolasparrague authored Mar 13, 2024
2 parents d1df7a7 + 03fcc6d commit fefbe1d
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 19 deletions.
35 changes: 18 additions & 17 deletions force-app/main/default/classes/service/SyncPlaylist.cls
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ public class SyncPlaylist {

if (token.getStatusCode() != SpotifyApiHttpClient.SUCCESS_STATUS_CODE)
continue;

TokenResponse tokenRes = TokenResponse.parse(token.getBody());
PlaylistResponse playlists;
Integer cont = 0;

do {

HttpResponse playlistsRes = SpotifyApiHttpClient.getPlaylist(
tokenRes.access_token,
cred.SpotifyUserId__c,
Expand All @@ -37,16 +37,27 @@ public class SyncPlaylist {
.replaceAll('"public" :', '"publicField" :'));

for (SimplefiedPlaylistObject playlist : playlists.items) {
Integer duration = 0;

playlistTrackMap.putAll(getPlaylistTrack(tokenRes.access_token, playlist.id));
for (SimplefieldTracksObject track : getPlaylistTrack(tokenRes.access_token, playlist.id)) {

duration += track.duration_ms;
String key = track.id + playlist.id;
PlaylistTrack__c playlistTrackRecord = new PlaylistTrack__c(
PlaylistTrack__c = key,
Playlist__r = new Playlist__c(SpotifyId__c = playlist.id),
Track__r = new Track__c(SpotifyId__c = track.id));
playlistTrackMap.put(key, playlistTrackRecord);
}

Playlist__c record = new Playlist__c(
SpotifyId__c = playlist.id,
Name = playlist.name,
Description__c = playlist.description,
Public__c = playlist.publicField,
url__c = playlist.external_urls?.spotify,
followers__c = playlist.followers
followers__c = playlist.followers,
Duration__c = duration
);
forInsert.add(record);
}
Expand All @@ -68,25 +79,15 @@ public class SyncPlaylist {
}
}

private static Map<String, PlaylistTrack__c> getPlaylistTrack(String token,String playlistId) {

Map<String, PlaylistTrack__c> result = new Map<String, PlaylistTrack__c>();
private static List<SimplefieldTracksObject> getPlaylistTrack(String token,String playlistId) {

List<SimplefieldTracksObject> result = new List<SimplefieldTracksObject>();
HttpResponse trackRes = SpotifyApiHttpClient.getPlaylistTracks(token, playlistId);

if (trackRes.getStatusCode() == SpotifyApiHttpClient.SUCCESS_STATUS_CODE) {

TrackResponse tracks = TrackResponse.parse(trackRes.getBody());

for (SimplefieldTracksObject track : tracks.getTracks()) {

String key = track.id + playlistId;
PlaylistTrack__c playlistTrackRecord = new PlaylistTrack__c(
PlaylistTrack__c = key,
Playlist__r = new Playlist__c(SpotifyId__c = playlistId),
Track__r = new Track__c(SpotifyId__c = track.id));
result.put(key, playlistTrackRecord);
}
result.addAll(tracks.getTracks());
}

return result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ private class SyncPlaylistTest {
List<HttpResponse> responseList = new List<HttpResponse>();
addResponse(responseList, '{"access_token":"1111"}');
addResponse(responseList, '{"total":2,"items":[{"id":"0","name":"name","publicField":true}]}');
addResponse(responseList, '{"items":[{"track":{"id":"trackId"}}]}');
addResponse(responseList, '{"items":[{"track":{"id":"trackId","duration_ms":"1"}}]}');
addResponse(responseList, '{"total":2,"items":[{"id":"1","name":"name","publicField":true}]}');
addResponse(responseList, '{"items":[{"track":{"id":"trackId1"}}]}');
addResponse(responseList, '{"items":[{"track":{"id":"trackId1","duration_ms":"1"}}]}');
Test.setMock(HttpCalloutMock.class, new HttpCalloutMockFactory(responseList));

List<ClientCredential__c> newCredentials = new List<ClientCredential__c>{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@
<behavior>Edit</behavior>
<field>Public__c</field>
</layoutItems>
<layoutItems>
<behavior>Readonly</behavior>
<field>Duration__c</field>
</layoutItems>
</layoutColumns>
<layoutColumns>
<layoutItems>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
<fullName>Duration__c</fullName>
<externalId>false</externalId>
<label>Duration</label>
<precision>18</precision>
<required>false</required>
<scale>0</scale>
<trackTrending>false</trackTrending>
<type>Number</type>
<unique>false</unique>
</CustomField>
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,11 @@
<field>Playlist__c.Description__c</field>
<readable>true</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Playlist__c.Duration__c</field>
<readable>true</readable>
</fieldPermissions>
<fieldPermissions>
<editable>true</editable>
<field>Playlist__c.Followers__c</field>
Expand Down

0 comments on commit fefbe1d

Please sign in to comment.