package fr.ydelouis.selfoss.rest;
import org.androidannotations.annotations.rest.Get;
import org.androidannotations.annotations.rest.Post;
import org.androidannotations.annotations.rest.Rest;
import org.androidannotations.api.rest.RestClientErrorHandling;
import org.androidannotations.api.rest.RestClientSupport;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import java.util.List;
import fr.ydelouis.selfoss.entity.Article;
import fr.ydelouis.selfoss.entity.ArticleType;
import fr.ydelouis.selfoss.entity.Source;
import fr.ydelouis.selfoss.entity.Success;
import fr.ydelouis.selfoss.entity.Tag;
@Rest(converters = { StringHttpMessageConverter.class, MappingJackson2HttpMessageConverter.class },
interceptors = { SelfossApiInterceptor.class },
requestFactory = SelfossApiRequestFactory.class)
public interface SelfossRest extends RestClientErrorHandling, RestClientSupport {
@Get("/login")
Success login();
@Get("/sources/list")
List<Source> listSources();
@Get("/tags")
List<Tag> listTags();
@Get("/items?offset={offset}&items={count}")
List<Article> listArticles(int offset, int count);
@Get("/items?offset={offset}&items={count}&updatedsince={updateTime}")
List<Article> listUpdatedArticles(int offset, int count, String updateTime);
@Get("/items?tag={tag}&offset={offset}&items={count}")
List<Article> listArticles(Tag tag, int offset, int count);
@Get("/items?source={sourceId}&offset={offset}&items={count}")
List<Article> listArticles(int sourceId, int offset, int count);
@Get("/items?type={type}&tag={tag}&offset={offset}&items={count}")
List<Article> listArticles(ArticleType type, Tag tag, int offset, int count);
@Get("/items?type={type}&source={sourceId}&offset={offset}&items={count}")
List<Article> listArticles(ArticleType type, int sourceId, int offset, int count);
@Get("/items?type={type}&offset={offset}&items={count}")
List<Article> listArticles(ArticleType type, int offset, int count);
@Get("/items?type=unread&offset={offset}&items={count}")
List<Article> listUnreadArticles(int offset, int count);
@Get("/items?type=starred&offset={offset}&items={count}")
List<Article> listStarredArticles(int offset, int count);
@Post("mark/{articleId}")
Success markRead(int articleId);
@Post("unmark/{articleId}")
Success markUnread(int articleId);
@Post("mark/")
Success markRead(String articleIds);
@Post("starr/{articleId}")
Success markStarred(int articleId);
@Post("unstarr/{articleId}")
Success markUnstarred(int articleId);
}