Ejemplo n.º 1
0
        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 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;
        }