Skip to content

Commit

Permalink
Some refactoring, adding getLovedTracks,getTopTracks,scrobble and upd…
Browse files Browse the repository at this point in the history
…ateNowPlaying
  • Loading branch information
michaellavelle committed Oct 15, 2011
1 parent 962345a commit c485e4f
Show file tree
Hide file tree
Showing 23 changed files with 603 additions and 55 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -15,7 +15,7 @@
<version>1.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.socialsocialsignin</groupId>
<groupId>org.socialsignin</groupId>
<artifactId>spring-social-web-non-oauth-extension</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
Expand Down
43 changes: 43 additions & 0 deletions src/main/java/org/springframework/social/lastfm/api/Artist.java
@@ -0,0 +1,43 @@
package org.springframework.social.lastfm.api;

/**
* @author Michael Lavelle
*/
public class Artist {

public String getMusicBrainsId() {
return musicBrainsId;
}

public void setMusicBrainsId(String musicBrainsId) {
this.musicBrainsId = musicBrainsId;
}

private String url;
private String name;
private String musicBrainsId;


public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Artist(String url, String name,String musicBrainsId) {
this.url = url;
this.name = name;
this.musicBrainsId = musicBrainsId;
}

}
@@ -0,0 +1,8 @@
package org.springframework.social.lastfm.api;

public interface ArtistDescriptor {

public String getName();
public String getMusicBrainsId();

}
@@ -0,0 +1,27 @@
package org.springframework.social.lastfm.api;

public class SimpleArtist implements ArtistDescriptor {

private String name;
private String musicBrainsId;

public SimpleArtist(String name,String musicBrainsId)
{
this.name = name;
this.musicBrainsId = musicBrainsId;
}

public SimpleArtist(String name)
{
this.name = name;
}

public String getName() {
return name;
}

public String getMusicBrainsId() {
return musicBrainsId;
}

}
@@ -0,0 +1,32 @@
package org.springframework.social.lastfm.api;

/**
* @author Michael Lavelle
*/
public class SimpleTrack extends SimpleTrackDescriptor {

private String url;


public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}


public SimpleTrack(String url, String name,String musicBrainsId,String artistName) {
super(artistName,name,musicBrainsId);
this.url = url;

}

public SimpleTrack(String url, String name,String musicBrainsId,SimpleArtist simpleArtist) {
super(simpleArtist,name,musicBrainsId);
this.url = url;

}

}
@@ -0,0 +1,56 @@
package org.springframework.social.lastfm.api;

/**
* @author Michael Lavelle
*/
public class SimpleTrackDescriptor implements TrackDescriptor {

private String name;
private ArtistDescriptor artistDescriptor;
private String musicBrainsId;

public SimpleTrackDescriptor(String artistName,String name,String musicBrainsId)
{
this.name = name;
this.artistDescriptor = new SimpleArtist(artistName);
this.musicBrainsId = musicBrainsId;
}

public SimpleTrackDescriptor(ArtistDescriptor artistDescriptor,String name,String musicBrainsId)
{
this.name = name;
this.artistDescriptor = artistDescriptor;
this.musicBrainsId = musicBrainsId;
}




public SimpleTrackDescriptor(String artistName,String name)
{
this.name = name;
this.artistDescriptor = new SimpleArtist(artistName);
}

public SimpleTrackDescriptor(String musicBrainsId)
{
this.musicBrainsId = musicBrainsId;

}

@Override
public String getName() {
return name;
}

@Override
public String getArtistName() {
return artistDescriptor == null ? null : artistDescriptor.getName();
}

@Override
public String getMusicBrainsId() {
return musicBrainsId;
}

}
29 changes: 27 additions & 2 deletions src/main/java/org/springframework/social/lastfm/api/Track.java
Expand Up @@ -3,10 +3,28 @@
/**
* @author Michael Lavelle
*/
public class Track {
public class Track implements TrackDescriptor {

private String url;
private String name;
private String musicBrainsId;
private Artist artist;

public String getMusicBrainsId() {
return musicBrainsId;
}

public Artist getArtist() {
return artist;
}

public void setArtist(Artist artist) {
this.artist = artist;
}

public void setMusicBrainsId(String musicBrainsId) {
this.musicBrainsId = musicBrainsId;
}

public String getUrl() {
return url;
Expand All @@ -24,9 +42,16 @@ public void setName(String name) {
this.name = name;
}

public Track(String url, String name) {
public Track(String url, String name,String musicBrainsId,Artist artist) {
this.url = url;
this.name = name;
this.musicBrainsId = musicBrainsId;
this.artist = artist;
}

@Override
public String getArtistName() {
return artist.getName();
}

}
@@ -0,0 +1,12 @@
package org.springframework.social.lastfm.api;

/**
* @author Michael Lavelle
*/
public interface TrackDescriptor {

public String getName();
public String getArtistName();
public String getMusicBrainsId();

}
@@ -1,5 +1,6 @@
package org.springframework.social.lastfm.api;

import java.util.Date;
import java.util.List;

/**
Expand All @@ -12,5 +13,15 @@ public interface UserOperations {
public LastFmProfile getUserProfile(String userName);

public List<Track> getLovedTracks(String userName);
public List<Track> getTopTracks(String userName);

public List<SimpleTrack> getRecentTracks(String userName);


public void scrobble(TrackDescriptor trackDescriptor,Date timestamp);
public void updateNowPlaying(TrackDescriptor trackDescriptor);




}
@@ -1,5 +1,8 @@
package org.springframework.social.lastfm.api.impl;

import java.util.HashMap;
import java.util.Map;

import org.springframework.social.lastfm.connect.LastFmSignature;
import org.springframework.util.LinkedMultiValueMap;

Expand All @@ -13,15 +16,46 @@ public class LastFmApiMethodParameters extends
private static final long serialVersionUID = 1L;

public LastFmApiMethodParameters(String methodName, String apiKey,
String token, String secret) {
LastFmSignature lastFmSignature = new LastFmSignature(apiKey,
methodName, token, secret);
String token, String secret,Map<String,String> params) {
this(methodName,apiKey,token,secret,null,params);
}

public LastFmApiMethodParameters(String methodName, String apiKey,
String token, String secret,String sessionKey,Map<String,String> params) {
LastFmSignature lastFmSignature = sessionKey != null ?
new LastFmSignature(apiKey,
methodName, token, secret,sessionKey,params)
: new LastFmSignature(apiKey,
methodName, token, secret,params);
String apiSignature = lastFmSignature.toString();
add("format", "json");
add("api_sig", apiSignature);
add("api_key", apiKey);
if (sessionKey != null)
{
add("sk", sessionKey);
}
add("method", methodName);
add("token", token);
add("format", "json");
for (Map.Entry<String,String> entry : params.entrySet())
{
add(entry.getKey(),entry.getValue());
}
}

public LastFmApiMethodParameters(String methodName, String apiKey,
String token, String secret) {
this(methodName, apiKey, token, secret, new HashMap<String,String>());

}

public LastFmApiMethodParameters(String methodName, String apiKey,
String token, String secret,String sessionKey) {
this(methodName,apiKey,token,secret,sessionKey,new HashMap<String,String>());

}




}
Expand Up @@ -25,9 +25,9 @@ public class LastFmTemplate extends AbstractLastFmAuthApiBinding implements
private ObjectMapper objectMapper;

@Override
protected List<HttpMessageConverter<?>> getMessageConverters() {
protected List<HttpMessageConverter<?>> getMessageConverters(boolean json) {
List<HttpMessageConverter<?>> messageConverters = super
.getMessageConverters();
.getMessageConverters(json);
messageConverters.add(new ByteArrayHttpMessageConverter());
return messageConverters;
}
Expand Down

0 comments on commit c485e4f

Please sign in to comment.