package com.kickstarter.services; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.kickstarter.libs.Config; import com.kickstarter.models.Backing; import com.kickstarter.models.Category; import com.kickstarter.models.Comment; import com.kickstarter.models.Empty; import com.kickstarter.models.Location; import com.kickstarter.models.Message; import com.kickstarter.models.MessageThread; import com.kickstarter.models.Project; import com.kickstarter.models.ProjectNotification; import com.kickstarter.models.SurveyResponse; import com.kickstarter.models.Update; import com.kickstarter.models.User; import com.kickstarter.services.apiresponses.AccessTokenEnvelope; import com.kickstarter.services.apiresponses.ActivityEnvelope; import com.kickstarter.services.apiresponses.CommentsEnvelope; import com.kickstarter.services.apiresponses.DiscoverEnvelope; import com.kickstarter.services.apiresponses.MessageThreadEnvelope; import com.kickstarter.services.apiresponses.MessageThreadsEnvelope; import java.util.List; import rx.Observable; public interface ApiClientType { @NonNull Observable<Config> config(); @NonNull Observable<ActivityEnvelope> fetchActivities(); @NonNull Observable<ActivityEnvelope> fetchActivities(final @Nullable Integer count); @NonNull Observable<ActivityEnvelope> fetchActivitiesWithPaginationPath(final @NonNull String paginationPath); @NonNull Observable<List<Category>> fetchCategories(); @NonNull Observable<Category> fetchCategory(final @NonNull String param); @NonNull Observable<Category> fetchCategory(final @NonNull Category category); @NonNull Observable<User> fetchCurrentUser(); @NonNull Observable<Location> fetchLocation(final @NonNull String param); @NonNull Observable<List<ProjectNotification>> fetchProjectNotifications(); @NonNull Observable<Project> fetchProject(final @NonNull String param); @NonNull Observable<Project> fetchProject(final @NonNull Project project); @NonNull Observable<DiscoverEnvelope> fetchProjects(final @NonNull DiscoveryParams params); @NonNull Observable<DiscoverEnvelope> fetchProjects(final @NonNull String paginationUrl); @NonNull Observable<Backing> fetchProjectBacking(final @NonNull Project project, final @NonNull User user); @NonNull Observable<CommentsEnvelope> fetchComments(final @NonNull Project project); @NonNull Observable<CommentsEnvelope> fetchComments(final @NonNull String paginationPath); @NonNull Observable<CommentsEnvelope> fetchComments(final @NonNull Update update); @NonNull Observable<MessageThreadEnvelope> fetchMessagesForThread(final @NonNull MessageThread messageThread); @NonNull Observable<MessageThreadsEnvelope> fetchMessageThreads(); @NonNull Observable<MessageThreadsEnvelope> fetchMessageThreads(final @Nullable Project project); @NonNull Observable<MessageThreadsEnvelope> fetchMessageThreadsWithPaginationPath(final @NonNull String paginationPath); @NonNull Observable<Update> fetchUpdate(final @NonNull String projectParam, final @NonNull String updateParam); @NonNull Observable<Update> fetchUpdate(final @NonNull Update update); @NonNull Observable<AccessTokenEnvelope> loginWithFacebook(final @NonNull String accessToken); @NonNull Observable<AccessTokenEnvelope> loginWithFacebook(final @NonNull String fbAccessToken, final @NonNull String code); @NonNull Observable<AccessTokenEnvelope> login(final @NonNull String email, final @NonNull String password); @NonNull Observable<AccessTokenEnvelope> login(final @NonNull String email, final @NonNull String password, final @NonNull String code); @NonNull Observable<Comment> postComment(final @NonNull Project project, final @NonNull String body); @NonNull Observable<Comment> postComment(final @NonNull Update update, final @NonNull String body); @NonNull Observable<Empty> registerPushToken(final @NonNull String token); @NonNull Observable<AccessTokenEnvelope> registerWithFacebook(final @NonNull String fbAccessToken, boolean sendNewsletters); @NonNull Observable<User> resetPassword(final @NonNull String email); @NonNull Observable<Message> sendMessageToThread(final @NonNull MessageThread messageThread, final @NonNull String body); @NonNull Observable<AccessTokenEnvelope> signup(final @NonNull String name, final @NonNull String email, final @NonNull String password, final @NonNull String passwordConfirmation, final boolean sendNewsletters); @NonNull Observable<Project> starProject(final @NonNull Project project); @NonNull Observable<SurveyResponse> fetchSurveyResponse(final int surveyResponseId); @NonNull Observable<Project> toggleProjectStar(final @NonNull Project project); @NonNull Observable<List<SurveyResponse>> fetchUnansweredSurveys(); @NonNull Observable<ProjectNotification> updateProjectNotifications(final @NonNull ProjectNotification projectNotification, final boolean checked); @NonNull Observable<User> updateUserSettings(final @NonNull User user); }