public static EventHandlerResponse Redirect(Redirection redirection)
 {
     return new EventHandlerResponse
     {
         Action = EventHandlerResponseAction.Redirect,
         Redirection = redirection
     };
 }
        public void RedirectionUri(string uriPath, string rootParameter, string expectedUri)
        {
            var redirection = new Redirection { Uri = new Uri(BaseUriString + uriPath), Root = rootParameter };

            var uri = redirection.GetCalculatedUri();

            uri.ToString().Should().Be(BaseUriString + expectedUri);
        }
        protected HttpResponseMessage GenerateRedirectionUnavailableResponse()
        {
            var redirection = new Redirection
            {
                Uri = null
            };

            redirection.MetadataUrl = "https://newhost.sharefile.com/sf/v3/$metadata#ShareFile.Api.Models.Redirection@Element";

            return new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(JsonConvert.SerializeObject(redirection), Encoding.UTF8, "application/json"),
                RequestMessage = new HttpRequestMessage(HttpMethod.Get, new Uri("https://secure.sf-api.com/sf/v3/Items(" + GetId() + ")"))
            };

        }
 /// <summary>
 /// Callback method for Redirection events received by the ShareFile Client SDK
 /// </summary>
 /// <param name="requestMessage"></param>
 /// <param name="redirection"></param>
 /// <returns></returns>
 private EventHandlerResponse OnDomainChange(HttpRequestMessage requestMessage, Redirection redirection)
 {
     // Check if we already have a session on the target 
     bool hasSession = true;
     if (redirection.SessionCheck)
     {
         hasSession = false;
         try
         {
             var query = new ShareFile.Api.Client.Requests.Query<Session>(Client);
             query.Uri(new Uri(redirection.SessionUri.ToString() + "?root=" + redirection.Root));
             var session = query.Execute();
             hasSession = true;
         }
         catch (Exception)
         { }
     }
     // If we're not authenticated, we have to authenticate now using Forms
     if (!hasSession && redirection.FormsUri != null)
     {
         var authDomain = new AuthenticationDomain() { Uri = redirection.SessionUri.ToString() };
         authDomain = this.AuthenticateForms(authDomain,
             new Uri(string.Format("{0}?root={1}&redirect_url={2}", redirection.FormsUri, redirection.Root, Uri.EscapeUriString(Resources.RedirectURL))),
             redirection.TokenUri,
             redirection.Root);
         if (authDomain.OAuthToken == null)
         {
             return new EventHandlerResponse() { Action = EventHandlerResponseAction.Throw };
         }
     }
     return new EventHandlerResponse() { Action = EventHandlerResponseAction.Redirect, Redirection = redirection };
 }