package io.kaif.mobile.service; import java.util.List; import io.kaif.mobile.model.Vote; import retrofit2.http.Body; import retrofit2.http.GET; import retrofit2.http.POST; import retrofit2.http.Query; import rx.Observable; public interface VoteService { class VoteArticleEntry { String articleId; Vote.VoteState voteState; public VoteArticleEntry(String articleId, Vote.VoteState voteState) { this.articleId = articleId; this.voteState = voteState; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } VoteArticleEntry that = (VoteArticleEntry) o; if (!articleId.equals(that.articleId)) { return false; } return voteState == that.voteState; } @Override public int hashCode() { int result = articleId.hashCode(); result = 31 * result + voteState.hashCode(); return result; } } class VoteDebateEntry { String debateId; Vote.VoteState voteState; public VoteDebateEntry(String debateId, Vote.VoteState voteState) { this.debateId = debateId; this.voteState = voteState; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } VoteDebateEntry that = (VoteDebateEntry) o; if (!debateId.equals(that.debateId)) { return false; } return voteState == that.voteState; } @Override public int hashCode() { int result = debateId.hashCode(); result = 31 * result + voteState.hashCode(); return result; } } @GET("/v1/vote/article") Observable<List<Vote>> listArticleVotes( @Query(value = "article-id") CommaSeparatedParam articleIds); @GET("/v1/vote/debate") Observable<List<Vote>> listDebateVotes( @Query(value = "debate-id") CommaSeparatedParam articleIds); @POST("/v1/vote/article") Observable<Void> voteArticle(@Body VoteArticleEntry voteArticleEntry); @POST("/v1/vote/debate") Observable<Void> voteDebate(@Body VoteDebateEntry voteDebateEntry); }