public IConfigurable PrepareSubscription(MailboxSession mailbox, ConnectSubscriptionProxy proxy) { ArgumentValidator.ThrowIfNull("mailbox", mailbox); ArgumentValidator.ThrowIfNull("proxy", proxy); this.InitializeConfiguration(); LinkedInTokenInformation linkedInTokenInformation = this.ExchangeRequestTokenForAccessTokenAndSecret(proxy.RequestToken, proxy.RequestSecret, proxy.OAuthVerifier); proxy.Subscription.SubscriptionType = AggregationSubscriptionType.LinkedIn; proxy.Subscription.SubscriptionProtocolName = ConnectSubscription.LinkedInProtocolName; proxy.Subscription.SubscriptionProtocolVersion = ConnectSubscription.LinkedInProtocolVersion; proxy.Subscription.SubscriptionEvents = SubscriptionEvents.WorkItemCompleted; proxy.SendAsCheckNeeded = false; proxy.ProviderGuid = ConnectSubscription.LinkedInProviderGuid; proxy.MessageClass = "IPM.Aggregation.LinkedIn"; proxy.AssignAccessToken(linkedInTokenInformation.Token); proxy.AssignAccessTokenSecret(linkedInTokenInformation.Secret); proxy.AppId = this.authConfig.AppId; proxy.UserId = this.GetUserId(proxy.RequestToken, linkedInTokenInformation.Token, linkedInTokenInformation.Secret); OscFolderCreateResult oscFolderCreateResult = new OscFolderCreator(mailbox).Create("LinkedIn", proxy.UserId); if (!oscFolderCreateResult.Created) { new OscFolderMigration(mailbox, OscContactSourcesForContactParser.Instance).Migrate(oscFolderCreateResult.FolderId); proxy.InitialSyncInRecoveryMode = true; } return(proxy); }
public override void Delete(IConfigurable instance) { ConnectSubscriptionProxy connectSubscriptionProxy = instance as ConnectSubscriptionProxy; ConnectSubscription connectSubscription = (ConnectSubscription)connectSubscriptionProxy.Subscription; AggregationSubscriptionIdentity subscriptionIdentity = connectSubscription.SubscriptionIdentity; try { using (MailboxSession mailboxSession = base.OpenMailboxSession(subscriptionIdentity)) { ConnectSubscriptionCleanup connectSubscriptionCleanup = new ConnectSubscriptionCleanup(SubscriptionManager.Instance); connectSubscriptionCleanup.Cleanup(mailboxSession, connectSubscription, true); new PeopleConnectNotifier(mailboxSession).NotifyDisconnected(connectSubscription.Name); } } catch (LocalizedException ex) { CommonLoggingHelper.SyncLogSession.LogError((TSLID)1507UL, AggregationTaskUtils.Tracer, "ConnectSubscriptionDataProvider.Delete: {0} hit exception: {1}.", new object[] { connectSubscription.Name, ex }); Exception ex2 = ex; if (!(ex is FailedDeletePeopleConnectSubscriptionException)) { ex2 = new FailedDeletePeopleConnectSubscriptionException(connectSubscription.SubscriptionType, ex); } throw ex2; } }
private void RejectIfDifferentAccount(ConnectSubscriptionProxy proxy, string requestToken, string newAccessToken, string newAccessTokenSecret) { if (SetLinkedInSubscription.IsTestHook(requestToken)) { return; } string emailAddress = new LinkedInWebClient(this.appConfig, SetLinkedInSubscription.Tracer).GetProfile(newAccessToken, newAccessTokenSecret, "email-address").EmailAddress; if (!string.Equals(proxy.UserId, emailAddress, StringComparison.Ordinal)) { throw new CannotSwitchLinkedInAccountException(); } }
public void StampChangesOn(ConnectSubscriptionProxy proxy) { if (proxy == null) { throw new ArgumentNullException("proxy"); } this.InitializeConfiguration(); LinkedInTokenInformation linkedInTokenInformation = this.ExchangeRequestTokenForAccessTokenAndSecret(proxy.RequestToken, proxy.RequestSecret, proxy.OAuthVerifier); this.RejectIfDifferentAccount(proxy, proxy.RequestToken, linkedInTokenInformation.Token, linkedInTokenInformation.Secret); proxy.AssignAccessToken(linkedInTokenInformation.Token); proxy.AssignAccessTokenSecret(linkedInTokenInformation.Secret); proxy.AppId = this.authConfig.AppId; }
public void InitializeFolderAndNotifyApps(MailboxSession mailbox, ConnectSubscriptionProxy subscription) { if (mailbox == null) { throw new ArgumentNullException("mailbox"); } if (subscription == null) { throw new ArgumentNullException("subscription"); } if (NewLinkedInSubscription.IsTestHook(subscription.RequestToken)) { return; } new OscSyncLockCreator(mailbox).Create("LinkedIn", subscription.UserId); new PeopleConnectNotifier(mailbox).NotifyConnected(WellKnownNetworkNames.LinkedIn); }
public IConfigurable PrepareSubscription(MailboxSession mailbox, ConnectSubscriptionProxy proxy) { ArgumentValidator.ThrowIfNull("proxy", proxy); NewFacebookSubscription.Tracer.TraceFunction((long)this.GetHashCode(), "Entering NewFacebookSubscription.PrepareSubscription. Mailbox {0}.", new object[] { mailbox.Identity }); this.InitializeConfiguration(proxy.AppAuthorizationCode, proxy.RedirectUri); string text; string userId; if (NewFacebookSubscription.IsTestHook(proxy.AppAuthorizationCode)) { text = "***TEST_ACCESS_TOKEN***"; userId = "***TEST_USER_ID***"; } else { text = new FacebookAuthenticator(this.config).ExchangeAppAuthorizationCodeForAccessToken(proxy.AppAuthorizationCode); userId = NewFacebookSubscription.GetUserId(text); if (!CachedPeopleConnectApplicationConfig.Instance.ReadFacebook().SkipContactUpload) { NewFacebookSubscription.UploadContacts(mailbox, text); } else { NewFacebookSubscription.Tracer.TraceWarning <string>((long)this.GetHashCode(), "Skipping contact upload for new subscription in Mailbox {0}.", mailbox.Identity.ToString()); } } proxy.Subscription.SubscriptionType = AggregationSubscriptionType.Facebook; proxy.Subscription.SubscriptionProtocolName = ConnectSubscription.FacebookProtocolName; proxy.Subscription.SubscriptionProtocolVersion = ConnectSubscription.FacebookProtocolVersion; proxy.Subscription.SubscriptionEvents = SubscriptionEvents.WorkItemCompleted; proxy.SendAsCheckNeeded = false; proxy.ProviderGuid = ConnectSubscription.FacebookProviderGuid; proxy.MessageClass = "IPM.Aggregation.Facebook"; proxy.AssignAccessToken(text); proxy.AppId = this.config.AppId; proxy.UserId = userId; NewFacebookSubscription.Tracer.TraceFunction((long)this.GetHashCode(), "Leaving NewFacebookSubscription.PrepareSubscription. Mailbox {0}.", new object[] { mailbox.Identity }); return(proxy); }
public void InitializeFolderAndNotifyApps(MailboxSession mailbox, ConnectSubscriptionProxy subscription) { if (mailbox == null) { throw new ArgumentNullException("mailbox"); } if (subscription == null) { throw new ArgumentNullException("subscription"); } if (NewFacebookSubscription.IsTestHook(subscription.AppAuthorizationCode)) { return; } new OscFolderCreator(mailbox).Create("Facebook", subscription.UserId); new OscSyncLockCreator(mailbox).Create("Facebook", subscription.UserId); new PeopleConnectNotifier(mailbox).NotifyConnected(WellKnownNetworkNames.Facebook); }
public void StampChangesOn(ConnectSubscriptionProxy proxy) { if (proxy == null) { throw new ArgumentNullException("proxy"); } this.InitializeConfiguration(proxy.RedirectUri); string text; string userId; if (SetFacebookSubscription.IsTestHook(proxy.AppAuthorizationCode)) { text = "***TEST_SET_ACCESS_TOKEN***"; userId = "***TEST_SET_USER_ID***"; } else { text = new FacebookAuthenticator(this.config).ExchangeAppAuthorizationCodeForAccessToken(proxy.AppAuthorizationCode); userId = SetFacebookSubscription.GetUserId(text); } proxy.AssignAccessToken(text); proxy.AppId = this.config.AppId; proxy.UserId = userId; }