internal bool ContactEntryUploadFailure( ContactEntry contactEntry, UploadResult uploadResult) { Debug.Assert(uploadResult == UploadResult.InternalError || uploadResult == UploadResult.ServiceUnavailable || uploadResult == UploadResult.Conflict || uploadResult == UploadResult.Unknown); try { GoogleEmailUploaderTrace.EnteringMethod( "GoogleEmailUploaderModel.ContactBatchUploadFailure()"); if (GoogleEmailUploaderConfig.LogFullXml) { GoogleEmailUploaderTrace.WriteLine("Response Xml:"); GoogleEmailUploaderTrace.WriteXml(contactEntry.ResponseString); } GoogleEmailUploaderTrace.WriteLine("Contact upload failure ({0}): {1}", uploadResult, contactEntry.ContactName); if (uploadResult == UploadResult.InternalError || uploadResult == UploadResult.Conflict || uploadResult == UploadResult.Unknown) { if (this.pauseTime == GoogleEmailUploaderConfig.MaximumPauseTime) { GoogleEmailUploaderTrace.WriteLine( "Contact failed with internal error"); GoogleEmailUploaderTrace.WriteLine("Xml -"); GoogleEmailUploaderTrace.WriteXml(contactEntry.GetEntryXML()); GoogleEmailUploaderTrace.WriteLine("Result -"); GoogleEmailUploaderTrace.WriteXml(contactEntry.ResponseString); this.ProcessUploadContactEntry(contactEntry); this.pauseTime = GoogleEmailUploaderConfig.MinimumPauseTime; return false; } this.TimedPauseUpload(PauseReason.ServerInternalError); this.RaisePauseTime(); } else { GoogleEmailUploaderTrace.WriteLine( "Batch failed with service unavailable"); this.TimedPauseUpload(PauseReason.ServiceUnavailable); this.RaisePauseTime(); } return true; } finally { GoogleEmailUploaderTrace.ExitingMethod( "GoogleEmailUploaderModel.ContactBatchUploadFailure()"); } }
internal void ContactEntryUploaded(ContactEntry contactEntry, UploadResult uploadResult) { Debug.Assert(uploadResult == UploadResult.BadRequest || uploadResult == UploadResult.Created); try { GoogleEmailUploaderTrace.EnteringMethod( "GoogleEmailUploaderModel.ContactEntryUploaded()"); if (GoogleEmailUploaderConfig.LogFullXml) { GoogleEmailUploaderTrace.WriteLine("Response:"); GoogleEmailUploaderTrace.WriteXml(contactEntry.ResponseString); } GoogleEmailUploaderTrace.WriteLine("Contact uploaded: {0}", contactEntry.ContactName); this.ProcessUploadContactEntry(contactEntry); if (this.ContactUploadedEvent != null) { this.ContactUploadedEvent(contactEntry); } this.pauseTime = GoogleEmailUploaderConfig.MinimumPauseTime; } finally { GoogleEmailUploaderTrace.ExitingMethod( "GoogleEmailUploaderModel.ContactEntryUploaded()"); } }
internal void ContactEntryUploadTryStart(ContactEntry contactEntry) { try { GoogleEmailUploaderTrace.EnteringMethod( "GoogleEmailUploaderModel.ContactBatchUploadTryStart()"); if (GoogleEmailUploaderConfig.LogFullXml) { GoogleEmailUploaderTrace.WriteLine("Request Xml:"); GoogleEmailUploaderTrace.WriteXml(contactEntry.GetEntryXML()); } if (this.ContactUploadTryStartEvent != null) { this.ContactUploadTryStartEvent(contactEntry); } } finally { GoogleEmailUploaderTrace.ExitingMethod( "GoogleEmailUploaderModel.ContactBatchUploadTryStart()"); } }
void ProcessUploadContactEntry(ContactEntry contactEntry) { Debug.Assert(this.modelState == ModelState.UploadingPause || this.modelState == ModelState.Uploading); if (contactEntry.Uploaded) { contactEntry.StoreModel.SuccessfullyUploaded(contactEntry.ContactId); this.uploadedContactCount++; } else { FailedContactDatum failedContactDatum = new FailedContactDatum(contactEntry.ContactName, contactEntry.FailedReason); contactEntry.StoreModel.FailedToUpload(contactEntry.ContactId, failedContactDatum); this.failedContactCount++; } this.lkgStatePersistor.SaveLKGState(this); }
internal MailUploader(IHttpFactory httpFactory, string emailId, string password, string applicationName, GoogleEmailUploaderModel googleEmailUploaderModel) { this.HttpFactory = httpFactory; this.EmailId = emailId; this.Password = password; GoogleAuthenticator authenticator = new GoogleAuthenticator(httpFactory, AccountType.GoogleOrHosted, applicationName); AuthenticationResponse resp = authenticator.AuthenticateForService(this.EmailId, this.Password, "apps"); this.MailAuthenticationToken = resp.AuthToken; resp = authenticator.AuthenticateForService(this.EmailId, this.Password, "cp"); this.ContactAuthenticationToken = resp.AuthToken; this.GoogleEmailUploaderModel = googleEmailUploaderModel; string[] splits = emailId.Split('@'); this.UserName = splits[0]; this.DomainName = splits[1]; this.MailBatch = new MailBatch(googleEmailUploaderModel); this.ContactEntry = new ContactEntry(googleEmailUploaderModel); this.PauseEvent = new ManualResetEvent(true); this.batchMailUploadUrl = string.Format( GoogleEmailUploaderConfig.EmailMigrationUrl, this.DomainName, this.UserName); this.batchContactUploadUrl = string.Format( MailUploader.ContactMigrationURLTemplate, this.EmailId); this.ApplicationName = applicationName; }
void googleEmailUploaderModel_ContactUploadedEvent( ContactEntry contactEntry) { if (this.IsHandleCreated && !this.IsDisposed) { this.Invoke(new BoolDelegate(this.UpdateStatistics), new object[] { false }); } }
void googleEmailUploaderModel_ContactUploadTryStartEvent( ContactEntry contactEntry) { if (this.IsHandleCreated && !this.IsDisposed) { if (!this.googleEmailUploaderModel.IsPaused) { this.Invoke(new StringDelegate(this.UpdateMessageLabel), new object[] { string.Empty }); } } }