package fr.devoxx.sentimental.infra.adapter;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import com.google.common.base.Optional;
import com.codahale.metrics.annotation.Timed;
import fr.devoxx.sentimental.domain.Sentiment;
import fr.devoxx.sentimental.domain.SentimentAnalysis;
@Path("/sentiment-analysis")
@Produces(MediaType.APPLICATION_JSON)
public class SentimentalResource {
private final SentimentAnalysis analyzer;
public SentimentalResource(SentimentAnalysis analyzer) {
this.analyzer = analyzer;
}
@GET
@Timed
public SentimentReport saySentiment(@QueryParam("sentence") Optional<String> sentence) {
final String safeSentence = sentence.or("");
final Sentiment sentiment = analyzer.sentimentOf(safeSentence);
return new SentimentReport(safeSentence, sentiment.toString());
}
}