package com.fourtails.usuariolecturista.jobs; import com.appspot.ocr_backend.backend.Backend; import com.appspot.ocr_backend.backend.model.MessagesCreateUser; import com.appspot.ocr_backend.backend.model.MessagesCreateUserResponse; import com.fourtails.usuariolecturista.ServiceChooserActivity; import com.fourtails.usuariolecturista.ottoEvents.RegisterUserEvent; import com.google.api.client.extensions.android.http.AndroidHttp; import com.google.api.client.extensions.android.json.AndroidJsonFactory; import com.orhanobut.logger.Logger; import com.parse.ParseInstallation; import com.path.android.jobqueue.Job; import com.path.android.jobqueue.Params; import static com.fourtails.usuariolecturista.ottoEvents.RegisterUserEvent.Type; /** * RegisterUserJob async job */ public class RegisterUserJob extends Job { boolean responseOk = false; boolean retry = true; private String mAccountType; private long mAge; private String mEmail; private String mName; private String mInstallationId; public RegisterUserJob(String mAccountType, long mAge, String mEmail, String mName, String mInstallationId) { super(new Params(Priority.MID).requireNetwork().groupBy("register-user")); this.mAccountType = mAccountType; this.mAge = mAge; this.mEmail = mEmail; this.mName = mName; this.mInstallationId = mInstallationId; } @Override public void onAdded() { Logger.d("RegisterUserJob initiated"); } @Override public void onRun() throws Throwable { // Use a builder to help formulate the API request. Backend.Builder builder = new Backend.Builder( AndroidHttp.newCompatibleTransport(), new AndroidJsonFactory(), null); Backend service = builder.build(); MessagesCreateUser messagesCreateUser = new MessagesCreateUser(); messagesCreateUser.setAccountType(mAccountType); messagesCreateUser.setAge(mAge); messagesCreateUser.setEmail(mEmail); messagesCreateUser.setName(mName); messagesCreateUser.setInstallationId(mInstallationId); ParseInstallation.getCurrentInstallation().getInstallationId(); MessagesCreateUserResponse response = service.user().create(messagesCreateUser).execute(); if (response.getOk()) { Logger.json(response.toPrettyString()); ServiceChooserActivity.bus.post(new RegisterUserEvent(Type.COMPLETED, 1)); responseOk = true; } else { if (response.getError().contains("User email already in platform")) { Logger.d(response.getError()); ServiceChooserActivity.bus.post(new RegisterUserEvent(Type.COMPLETED, 1)); retry = false; } else { Logger.e(response.getError()); } } } @Override protected void onCancel() { Logger.d("RegisterUserJob canceled"); ServiceChooserActivity.bus.post(new RegisterUserEvent(Type.COMPLETED, 99)); responseOk = false; } @Override protected boolean shouldReRunOnThrowable(Throwable throwable) { return retry; } }