package com.mozu.mozuandroidinstoreassistant.app.customer.loaders;
import com.mozu.api.MozuApiContext;
import com.mozu.api.contracts.core.Address;
import com.mozu.api.contracts.customer.AddressValidationRequest;
import com.mozu.api.contracts.customer.AddressValidationResponse;
import com.mozu.api.resources.commerce.customer.AddressValidationRequestResource;
import rx.Observable;
import rx.Subscriber;
public class CustomerAddressValidationObservable {
private Integer mTenantApi;
private Integer mSiteId;
public CustomerAddressValidationObservable(Integer tenantApi, Integer siteId) {
this.mTenantApi = tenantApi;
this.mSiteId = siteId;
}
public Observable<AddressValidationResponse> getAddressValidationObservable(final Address address) {
return Observable.create(new Observable.OnSubscribe<AddressValidationResponse>() {
@Override
public void call(Subscriber<? super AddressValidationResponse> subscriber) {
if(mSiteId == null || mTenantApi == null) {
subscriber.onError(new Exception("Tenant and Site id must not be null"));
}
if(address == null) {
subscriber.onError(new Exception("Address must not be null"));
} else {
AddressValidationRequest request = new AddressValidationRequest();
request.setAddress(address);
try {
AddressValidationResponse response = new AddressValidationRequestResource(new MozuApiContext(mTenantApi, mSiteId))
.validateAddress(request);
subscriber.onNext(response);
subscriber.onCompleted();
} catch (Exception e) {
subscriber.onError(e);
}
}
}
});
}
}