Create / Update / Delete Challenge API-Routes

This commit is contained in:
Negue 2017-04-20 20:04:31 +02:00
parent b4e8b95116
commit f43eb684c8
7 changed files with 112 additions and 0 deletions

View file

@ -25,6 +25,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.Group;
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
import com.magicmicky.habitrpgwrapper.lib.models.Items;
import com.magicmicky.habitrpgwrapper.lib.models.LeaveChallengeBody;
import com.magicmicky.habitrpgwrapper.lib.models.PostChallenge;
import com.magicmicky.habitrpgwrapper.lib.models.PostChatMessageResult;
import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationRequest;
import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationResult;
@ -811,6 +812,22 @@ public class ApiClientImpl implements Action1<Throwable>, ApiClient {
return apiService.leaveChallenge(challengeId, body).compose(configureApiCallObserver());
}
@Override
public Observable<Challenge> createChallenge(PostChallenge challenge){
return apiService.createChallenge(challenge).compose(configureApiCallObserver());
}
@Override
public Observable<Challenge> updateChallenge(PostChallenge challenge){
return apiService.updateChallenge(challenge.id, challenge).compose(configureApiCallObserver());
}
@Override
public Observable<Void> deleteChallenge(String challengeId){
return apiService.deleteChallenge(challengeId).compose(configureApiCallObserver());
}
@Override
public Observable<Void> debugAddTenGems() {
return apiService.debugAddTenGems().compose(configureApiCallObserver());

View file

@ -0,0 +1,12 @@
package com.habitrpg.android.habitica.data;
import com.magicmicky.habitrpgwrapper.lib.models.Challenge;
import com.magicmicky.habitrpgwrapper.lib.models.PostChallenge;
import rx.Observable;
public interface ChallengeRepository extends BaseRepository {
Observable<Challenge> createChallenge(PostChallenge challenge);
Observable<Challenge> updateChallenge(PostChallenge challenge);
Observable<Void> deleteChallenge(String challengeId);
}

View file

@ -0,0 +1,32 @@
package com.habitrpg.android.habitica.data.implementation;
import com.habitrpg.android.habitica.data.ChallengeRepository;
import com.habitrpg.android.habitica.data.local.ChallengeLocalRepository;
import com.magicmicky.habitrpgwrapper.lib.api.ApiClient;
import com.magicmicky.habitrpgwrapper.lib.models.Challenge;
import com.magicmicky.habitrpgwrapper.lib.models.PostChallenge;
import rx.Observable;
public class ChallengeRepositoryImpl extends BaseRepositoryImpl<ChallengeLocalRepository> implements ChallengeRepository {
public ChallengeRepositoryImpl(ChallengeLocalRepository localRepository, ApiClient apiClient) {
super(localRepository, apiClient);
}
@Override
public Observable<Challenge> createChallenge(PostChallenge challenge) {
return apiClient.createChallenge(challenge);
}
@Override
public Observable<Challenge> updateChallenge(PostChallenge challenge) {
return apiClient.updateChallenge(challenge);
}
@Override
public Observable<Void> deleteChallenge(String challengeId) {
return apiClient.deleteChallenge(challengeId);
}
}

View file

@ -1,9 +1,11 @@
package com.habitrpg.android.habitica.modules;
import com.habitrpg.android.habitica.data.ChallengeRepository;
import com.habitrpg.android.habitica.data.SetupCustomizationRepository;
import com.habitrpg.android.habitica.data.TagRepository;
import com.habitrpg.android.habitica.data.TaskRepository;
import com.habitrpg.android.habitica.data.implementation.ChallengeRepositoryImpl;
import com.habitrpg.android.habitica.data.implementation.SetupCustomizationRepositoryImpl;
import com.habitrpg.android.habitica.data.implementation.TagRepositoryImpl;
import com.habitrpg.android.habitica.data.implementation.TaskRepositoryImpl;
@ -32,6 +34,7 @@ public class RepositoryModule {
}
@Provides
@Singleton
ChallengeLocalRepository provideChallengeLocalRepository(){
return new DbFlowChallengeLocalRepository();
}
@ -47,6 +50,13 @@ public class RepositoryModule {
return new TaskRepositoryImpl(localRepository, apiClient);
}
@Provides
@Singleton
ChallengeRepository providesChallengeRepository(ChallengeLocalRepository localRepository, ApiClient apiClient) {
return new ChallengeRepositoryImpl(localRepository, apiClient);
}
@Provides
TagLocalRepository providesTagLocalRepository() {
return new TagLocalRepositoryImpl();

View file

@ -11,6 +11,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.Group;
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
import com.magicmicky.habitrpgwrapper.lib.models.Items;
import com.magicmicky.habitrpgwrapper.lib.models.LeaveChallengeBody;
import com.magicmicky.habitrpgwrapper.lib.models.PostChallenge;
import com.magicmicky.habitrpgwrapper.lib.models.PostChatMessageResult;
import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationRequest;
import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationResult;
@ -200,6 +201,10 @@ public interface ApiClient {
Observable<Void> leaveChallenge(String challengeId, LeaveChallengeBody body);
Observable<Challenge> createChallenge(PostChallenge challenge);
Observable<Challenge> updateChallenge(PostChallenge challenge);
Observable<Void> deleteChallenge(String challengeId);
//DEBUG: These calls only work on a local development server
Observable<Void> debugAddTenGems();

View file

@ -8,6 +8,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.Group;
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
import com.magicmicky.habitrpgwrapper.lib.models.Items;
import com.magicmicky.habitrpgwrapper.lib.models.LeaveChallengeBody;
import com.magicmicky.habitrpgwrapper.lib.models.PostChallenge;
import com.magicmicky.habitrpgwrapper.lib.models.PostChatMessageResult;
import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationRequest;
import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationResult;
@ -287,6 +288,16 @@ public interface ApiService {
@POST("challenges/{challengeId}/leave")
Observable<HabitResponse<Void>> leaveChallenge(@Path("challengeId") String challengeId, @Body LeaveChallengeBody body);
@POST("challenges")
Observable<HabitResponse<Challenge>> createChallenge(@Body PostChallenge challenge);
@PUT("challenges/{challengeId}")
Observable<HabitResponse<Challenge>> updateChallenge(@Path("challengeId") String challengeId, @Body PostChallenge challenge);
@DELETE("challenges/{challengeId}")
Observable<HabitResponse<Void>> deleteChallenge(@Path("challengeId") String challengeId);
//DEBUG: These calls only work on a local development server
@POST("debug/add-ten-gems")

View file

@ -0,0 +1,25 @@
package com.magicmicky.habitrpgwrapper.lib.models;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TasksOrder;
/**
* Needs to be a separate Class, the normal Challenge has the group as Object
* The Challenge for adding/updating just has the group as id
*/
public class PostChallenge {
public String id;
public String name;
public String shortName;
public String description;
public String leaderName;
public String group;
public int prize;
public TasksOrder tasksOrder;
}