protected override void InternalProcessRecord() { TaskLogger.LogEnter(); try { ExchangePrincipal exchangePrincipal = ExchangePrincipal.FromADUser(this.DataObject, null); using (MailboxSession mailboxSession = MailboxSession.OpenAsAdmin(exchangePrincipal, CultureInfo.InvariantCulture, "Client=Management;Action=Set-UserPhoto")) { PhotoRequest request = this.CreateRequest(exchangePrincipal); PhotoUploadPipeline photoUploadPipeline = new PhotoUploadPipeline(SetUserPhoto.PhotosConfiguration, mailboxSession, (IRecipientSession)base.DataSession, this.tracer); photoUploadPipeline.Upload(request, Stream.Null); if (!this.Save && !this.Cancel && !this.Preview) { photoUploadPipeline.Upload(this.CreateSavePreviewRequest(exchangePrincipal), Stream.Null); } } } catch (WrongServerException ex) { this.LogFailedToUploadPhotoEvent(ex); this.WriteError(new CannotModifyPhotoBecauseMailboxIsInTransitException(ex), ExchangeErrorCategory.ServerTransient, this.DataObject, true); } catch (Exception e) { this.LogFailedToUploadPhotoEvent(e); throw; } finally { this.tracer.Dump(new PhotoRequestLogWriter(SetUserPhoto.RequestLog, SetUserPhoto.GenerateRequestId())); } TaskLogger.LogExit(); }
private void InternalUploadPhoto() { PhotoUploadPipeline photoUploadPipeline = new PhotoUploadPipeline(new PhotosConfiguration(ExchangeSetupContext.InstallPath), this.mailboxSession, this.adSession, GroupMailboxDefaultPhotoUploader.Tracer); string text = this.group.DisplayName; if (string.IsNullOrWhiteSpace(text)) { text = this.group.Name; } using (Stream stream = InitialsImageGenerator.GenerateAsStream(text, 1024)) { PhotoRequest request = new PhotoRequest { TargetPrimarySmtpAddress = this.group.PrimarySmtpAddress.ToString(), UploadTo = this.group.ObjectId, Preview = true, RawUploadedPhoto = stream, UploadCommand = UploadCommand.Upload }; photoUploadPipeline.Upload(request, Stream.Null); request = new PhotoRequest { TargetPrimarySmtpAddress = this.group.PrimarySmtpAddress.ToString(), UploadTo = this.group.ObjectId, Preview = false, UploadCommand = UploadCommand.Upload }; photoUploadPipeline.Upload(request, Stream.Null); } }
public static void ClearGroupPhoto(IRecipientSession adSession, IMailboxSession mailboxSession, ADUser group) { PhotoUploadPipeline photoUploadPipeline = new PhotoUploadPipeline(new PhotosConfiguration(ExchangeSetupContext.InstallPath), mailboxSession, adSession, GroupMailboxDefaultPhotoUploader.Tracer); PhotoRequest request = new PhotoRequest { TargetPrimarySmtpAddress = group.PrimarySmtpAddress.ToString(), UploadTo = group.ObjectId, Preview = true, UploadCommand = UploadCommand.Clear }; photoUploadPipeline.Upload(request, Stream.Null); request = new PhotoRequest { TargetPrimarySmtpAddress = group.PrimarySmtpAddress.ToString(), UploadTo = group.ObjectId, Preview = false, UploadCommand = UploadCommand.Clear }; photoUploadPipeline.Upload(request, Stream.Null); }