package com.code44.finance.api.requests; import android.content.Context; import android.text.TextUtils; import com.code44.finance.api.GcmRegistration; import com.code44.finance.api.Request; import com.code44.finance.backend.endpoint.users.Users; import com.code44.finance.backend.endpoint.users.model.RegisterDeviceBody; import com.code44.finance.common.utils.Preconditions; import com.google.android.gms.gcm.GoogleCloudMessaging; public class RegisterDeviceRequest extends Request { private static final String PROJECT_NUMBER = "1007413878843"; private final Context context; private final Users usersService; private final GcmRegistration gcmRegistration; public RegisterDeviceRequest(Context context, Users usersService, GcmRegistration gcmRegistration) { super(null); Preconditions.notNull(context, "Context cannot be null."); Preconditions.notNull(usersService, "Users cannot be null."); Preconditions.notNull(gcmRegistration, "GCM Registration cannot be null."); this.context = context; this.usersService = usersService; this.gcmRegistration = gcmRegistration; } @Override protected void performRequest() throws Exception { String registrationId = gcmRegistration.getRegistrationId(); // Register with GCM if necessary if (TextUtils.isEmpty(registrationId)) { final GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context); registrationId = gcm.register(PROJECT_NUMBER); gcmRegistration.setRegistrationId(registrationId); } // Prepare registration body final RegisterDeviceBody body = new RegisterDeviceBody(); body.setRegId(registrationId); // Register device with AppEngine usersService.registerDevice(body).execute(); gcmRegistration.setRegisteredWithServer(true); } }