private InternalOperationReturnValues GetProfileLiteSync(string scenario, out string profileResourceId, out string expressionProfileResourceId, bool syncToOwner) { MsnServiceState serviceState = new MsnServiceState(scenario, "GetProfile", false); StorageService storageService = (StorageService)CreateService(MsnServiceType.Storage, serviceState); GetProfileRequestType getprofileRequest = new GetProfileRequestType(); Alias alias = new Alias(); alias.NameSpace = "MyCidStuff"; alias.Name = Convert.ToString(NSMessageHandler.Owner.CID); Handle pHandle = new Handle(); pHandle.RelationshipName = "MyProfile"; pHandle.Alias = alias; getprofileRequest.profileHandle = pHandle; getprofileRequest.profileAttributes = new profileAttributes(); ExpressionProfileAttributesType expAttrib = CreateFullExpressionProfileAttributes(); getprofileRequest.profileAttributes.ExpressionProfileAttributes = expAttrib; try { ChangeCacheKeyAndPreferredHostForSpecifiedMethod(storageService, MsnServiceType.Storage, serviceState, getprofileRequest); GetProfileResponse response = storageService.GetProfile(getprofileRequest); #region Process Profile profileResourceId = response.GetProfileResult.ResourceID; if (response.GetProfileResult.ExpressionProfile == null) { Trace.WriteLineIf(Settings.TraceSwitch.TraceInfo, "Get profile cannot get expression profile of this owner."); NSMessageHandler.ContactService.Deltas.Profile.HasExpressionProfile = false; NSMessageHandler.ContactService.Deltas.Profile.DisplayName = NSMessageHandler.Owner.Name; expressionProfileResourceId = string.Empty; return(InternalOperationReturnValues.NoExpressionProfile); } else { NSMessageHandler.ContactService.Deltas.Profile.HasExpressionProfile = true; NSMessageHandler.ContactService.Deltas.Profile.ExpressionProfile.ResourceID = response.GetProfileResult.ExpressionProfile.ResourceID; NSMessageHandler.ContactService.Deltas.Profile.ExpressionProfile.DateModified = response.GetProfileResult.ExpressionProfile.DateModified; expressionProfileResourceId = response.GetProfileResult.ExpressionProfile.ResourceID; } NSMessageHandler.ContactService.Deltas.Profile.DateModified = response.GetProfileResult.DateModified; NSMessageHandler.ContactService.Deltas.Profile.ResourceID = response.GetProfileResult.ResourceID; // Display name NSMessageHandler.ContactService.Deltas.Profile.DisplayName = response.GetProfileResult.ExpressionProfile.DisplayName; // Personal status if (response.GetProfileResult.ExpressionProfile.PersonalStatus != null) { NSMessageHandler.ContactService.Deltas.Profile.PersonalMessage = response.GetProfileResult.ExpressionProfile.PersonalStatus; } NSMessageHandler.ContactService.Deltas.Save(true); // Display photo if (null != response.GetProfileResult.ExpressionProfile.Photo) { foreach (DocumentStream docStream in response.GetProfileResult.ExpressionProfile.Photo.DocumentStreams) { if (docStream.DocumentStreamType != "UserTileStatic") { continue; } if (NSMessageHandler.ContactService.Deltas.Profile.Photo.PreAthURL == docStream.PreAuthURL) { if (syncToOwner) { DisplayImage newDisplayImage = new DisplayImage(NSMessageHandler.Owner.Account.ToLowerInvariant(), NSMessageHandler.ContactService.Deltas.Profile.Photo.DisplayImage); NSMessageHandler.Owner.DisplayImage = newDisplayImage; } } else { string requesturi = docStream.PreAuthURL; if (requesturi.StartsWith("/")) { requesturi = "http://blufiles.storage.msn.com" + requesturi; //I found it http://byfiles.storage.msn.com is also ok } // Don't urlencode t= :)) string usertitleURL = requesturi + "?t=" + System.Web.HttpUtility.UrlEncode(NSMessageHandler.MSNTicket.SSOTickets[SSOTicketType.Storage].Ticket.Substring(2)); SyncUserTile(usertitleURL, syncToOwner, delegate(object imageStream) { SerializableMemoryStream ms = imageStream as SerializableMemoryStream; NSMessageHandler.ContactService.Deltas.Profile.Photo.Name = response.GetProfileResult.ExpressionProfile.Photo.Name; NSMessageHandler.ContactService.Deltas.Profile.Photo.DateModified = response.GetProfileResult.ExpressionProfile.Photo.DateModified; NSMessageHandler.ContactService.Deltas.Profile.Photo.ResourceID = response.GetProfileResult.ExpressionProfile.Photo.ResourceID; NSMessageHandler.ContactService.Deltas.Profile.Photo.PreAthURL = docStream.PreAuthURL; if (ms != null) { NSMessageHandler.ContactService.Deltas.Profile.Photo.DisplayImage = ms; } NSMessageHandler.ContactService.Deltas.Save(true); }, delegate(object param) { Exception ex = param as Exception; Trace.WriteLineIf(Settings.TraceSwitch.TraceError, "Get DisplayImage error: " + ex.Message, GetType().Name); if (NSMessageHandler.Owner.UserTileURL != null) { SyncUserTile(NSMessageHandler.Owner.UserTileURL.AbsoluteUri, syncToOwner, null, null); } }); } } } #endregion } catch (Exception ex) { OnServiceOperationFailed(storageService, new ServiceOperationFailedEventArgs("GetProfile", ex)); Trace.WriteLineIf(Settings.TraceSwitch.TraceError, "GetProfile error: " + ex.Message, GetType().FullName); expressionProfileResourceId = string.Empty; profileResourceId = string.Empty; if (ex.Message.ToLowerInvariant().Contains("does not exist")) { return(InternalOperationReturnValues.ProfileNotExist); } return(InternalOperationReturnValues.RequestFailed); } return(InternalOperationReturnValues.Succeed); }
private InternalOperationReturnValues GetProfileLiteSync(string scenario, out string profileResourceId, out string expressionProfileResourceId, bool syncToOwner) { MsnServiceState serviceState = new MsnServiceState(scenario, "GetProfile", false); StorageService storageService = (StorageService)CreateService(MsnServiceType.Storage, serviceState); GetProfileRequestType getprofileRequest = new GetProfileRequestType(); Alias alias = new Alias(); alias.NameSpace = "MyCidStuff"; alias.Name = Convert.ToString(NSMessageHandler.Owner.CID); Handle pHandle = new Handle(); pHandle.RelationshipName = "MyProfile"; pHandle.Alias = alias; getprofileRequest.profileHandle = pHandle; getprofileRequest.profileAttributes = new profileAttributes(); ExpressionProfileAttributesType expAttrib = CreateFullExpressionProfileAttributes(); getprofileRequest.profileAttributes.ExpressionProfileAttributes = expAttrib; try { ChangeCacheKeyAndPreferredHostForSpecifiedMethod(storageService, MsnServiceType.Storage, serviceState, getprofileRequest); GetProfileResponse response = storageService.GetProfile(getprofileRequest); #region Process Profile profileResourceId = response.GetProfileResult.ResourceID; if (response.GetProfileResult.ExpressionProfile == null) { Trace.WriteLineIf(Settings.TraceSwitch.TraceInfo, "Get profile cannot get expression profile of this owner."); NSMessageHandler.ContactService.Deltas.Profile.HasExpressionProfile = false; NSMessageHandler.ContactService.Deltas.Profile.DisplayName = NSMessageHandler.Owner.Name; expressionProfileResourceId = string.Empty; return InternalOperationReturnValues.NoExpressionProfile; } else { NSMessageHandler.ContactService.Deltas.Profile.HasExpressionProfile = true; NSMessageHandler.ContactService.Deltas.Profile.ExpressionProfile.ResourceID = response.GetProfileResult.ExpressionProfile.ResourceID; NSMessageHandler.ContactService.Deltas.Profile.ExpressionProfile.DateModified = response.GetProfileResult.ExpressionProfile.DateModified; expressionProfileResourceId = response.GetProfileResult.ExpressionProfile.ResourceID; } NSMessageHandler.ContactService.Deltas.Profile.DateModified = response.GetProfileResult.DateModified; NSMessageHandler.ContactService.Deltas.Profile.ResourceID = response.GetProfileResult.ResourceID; // Display name NSMessageHandler.ContactService.Deltas.Profile.DisplayName = response.GetProfileResult.ExpressionProfile.DisplayName; // Personal status if (response.GetProfileResult.ExpressionProfile.PersonalStatus != null) { NSMessageHandler.ContactService.Deltas.Profile.PersonalMessage = response.GetProfileResult.ExpressionProfile.PersonalStatus; } NSMessageHandler.ContactService.Deltas.Save(true); // Display photo if (null != response.GetProfileResult.ExpressionProfile.Photo) { foreach (DocumentStream docStream in response.GetProfileResult.ExpressionProfile.Photo.DocumentStreams) { if (docStream.DocumentStreamType != "UserTileStatic") { continue; } if (NSMessageHandler.ContactService.Deltas.Profile.Photo.PreAthURL == docStream.PreAuthURL) { if (syncToOwner) { DisplayImage newDisplayImage = new DisplayImage(NSMessageHandler.Owner.Account.ToLowerInvariant(), NSMessageHandler.ContactService.Deltas.Profile.Photo.DisplayImage); NSMessageHandler.Owner.DisplayImage = newDisplayImage; } } else { string requesturi = docStream.PreAuthURL; if (requesturi.StartsWith("/")) { requesturi = "http://blufiles.storage.msn.com" + requesturi; //I found it http://byfiles.storage.msn.com is also ok } // Don't urlencode t= :)) string usertitleURL = requesturi + "?t=" + System.Web.HttpUtility.UrlEncode(NSMessageHandler.MSNTicket.SSOTickets[SSOTicketType.Storage].Ticket.Substring(2)); SyncUserTile(usertitleURL, syncToOwner, delegate(object imageStream) { SerializableMemoryStream ms = imageStream as SerializableMemoryStream; NSMessageHandler.ContactService.Deltas.Profile.Photo.Name = response.GetProfileResult.ExpressionProfile.Photo.Name; NSMessageHandler.ContactService.Deltas.Profile.Photo.DateModified = response.GetProfileResult.ExpressionProfile.Photo.DateModified; NSMessageHandler.ContactService.Deltas.Profile.Photo.ResourceID = response.GetProfileResult.ExpressionProfile.Photo.ResourceID; NSMessageHandler.ContactService.Deltas.Profile.Photo.PreAthURL = docStream.PreAuthURL; if (ms != null) { NSMessageHandler.ContactService.Deltas.Profile.Photo.DisplayImage = ms; } NSMessageHandler.ContactService.Deltas.Save(true); }, delegate(object param) { Exception ex = param as Exception; Trace.WriteLineIf(Settings.TraceSwitch.TraceError, "Get DisplayImage error: " + ex.Message, GetType().Name); if (NSMessageHandler.Owner.UserTileURL != null) { SyncUserTile(NSMessageHandler.Owner.UserTileURL.AbsoluteUri, syncToOwner, null, null); } }); } } } #endregion } catch (Exception ex) { OnServiceOperationFailed(storageService, new ServiceOperationFailedEventArgs("GetProfile", ex)); Trace.WriteLineIf(Settings.TraceSwitch.TraceError, "GetProfile error: " + ex.Message, GetType().FullName); expressionProfileResourceId = string.Empty; profileResourceId = string.Empty; if (ex.Message.ToLowerInvariant().Contains("does not exist")) { return InternalOperationReturnValues.ProfileNotExist; } return InternalOperationReturnValues.RequestFailed; } return InternalOperationReturnValues.Succeed; }