package com.ushahidi.platform.mobile.app.data.api;
import com.ushahidi.platform.mobile.app.data.api.model.FormAttributes;
import com.ushahidi.platform.mobile.app.data.api.oauth.UshAccessTokenManager;
import com.ushahidi.platform.mobile.app.data.entity.FormAttributeEntity;
import android.support.annotation.NonNull;
import java.util.List;
import javax.inject.Inject;
import rx.Observable;
/**
* @author Ushahidi Team <team@ushahidi.com>
*/
public class FormAttributeApi {
private final UshAccessTokenManager mUshAccessTokenManager;
/**
* Default constructor
*
* @param ushAccessTokenManager The access token manager. Cannot be a null value
*/
@Inject
public FormAttributeApi(@NonNull UshAccessTokenManager ushAccessTokenManager) {
mUshAccessTokenManager = ushAccessTokenManager;
}
/**
* Gets a {@link FormAttributes}
*
* @param formId The form id to use to retrieve the form attribute
* @return An Observable that emits{@link FormAttributes}
*/
public Observable<List<FormAttributeEntity>> getFormAttributes(Long formId) {
return mUshAccessTokenManager.getValidAccessToken().concatMap(
authorizationHeader -> mUshAccessTokenManager.getRestfulService()
.getFormAttributes(authorizationHeader, formId)).flatMap(
this::setFormAttributes);
}
private Observable<List<FormAttributeEntity>> setFormAttributes(FormAttributes attributes) {
return Observable.just(attributes.getFormAttributes());
}
}