internal static bool TryConvertToCompleteUrl(IExchangePrincipal exchangePrincipal, string url, string extensionId, out string completeUrl, out Exception exception)
 {
     exception   = null;
     completeUrl = url;
     if (!url.StartsWith("http://") && !url.StartsWith("https://") && !url.StartsWith("/"))
     {
         string contentDeliveryNetworkEndpoint = DefaultExtensionTable.GetContentDeliveryNetworkEndpoint();
         if (string.IsNullOrEmpty(contentDeliveryNetworkEndpoint))
         {
             string domain = exchangePrincipal.MailboxInfo.PrimarySmtpAddress.Domain;
             string text   = HttpUtility.UrlEncode(string.Format("{0}@{1}", exchangePrincipal.MailboxInfo.MailboxGuid, domain));
             if (DefaultExtensionTable.baseOwaUrl == null && !DefaultExtensionTable.TryFindOwaServiceUrl(exchangePrincipal, out exception))
             {
                 return(false);
             }
             completeUrl = string.Format("{0}/{1}/prem/{2}/ext/def/{3}/{4}", new object[]
             {
                 DefaultExtensionTable.baseOwaUrl,
                 text,
                 DefaultExtensionTable.GetInstalledOwaVersion(),
                 extensionId,
                 url
             });
         }
         else
         {
             completeUrl = string.Format("{0}/owa/prem/{1}/ext/def/{2}/{3}", new object[]
             {
                 contentDeliveryNetworkEndpoint,
                 DefaultExtensionTable.GetInstalledOwaVersion(),
                 extensionId,
                 url
             });
         }
     }
     return(true);
 }