AutoDiscoverFromQueryUrl() public method

Try to discover the OpenSearchDescription from an URL.
public AutoDiscoverFromQueryUrl ( OpenSearchUrl url ) : OpenSearchDescription
url OpenSearchUrl URL.
return Terradue.OpenSearch.Schema.OpenSearchDescription
        /// <summary>
        /// Finds the open search description.
        /// </summary>
        /// <returns>The open search description.</returns>
        /// <param name="baseUrl">Base URL.</param>
        public static IOpenSearchable FindOpenSearchable(OpenSearchEngine ose, Uri baseUrl, string mimeType = null, bool soft = false)
        {
            OpenSearchUrl url = new OpenSearchUrl(baseUrl);
            OpenSearchDescription openSearchDescription = null;
            UrlBasedOpenSearchableFactory urlBasedOpenSearchableFactory;
            IOpenSearchable result;
            try {
                openSearchDescription = OpenSearchFactory.LoadOpenSearchDescriptionDocument(url);
                OpenSearchDescriptionUrl openSearchDescriptionUrl;
                if (mimeType == null) {
                    openSearchDescriptionUrl = openSearchDescription.Url.First<OpenSearchDescriptionUrl>();
                } else {
                    openSearchDescriptionUrl = openSearchDescription.Url.FirstOrDefault((OpenSearchDescriptionUrl u) => u.Type == mimeType);
                }
                if (openSearchDescriptionUrl == null) {
                    throw new InvalidOperationException("Impossible to find an OpenSearchable link for the type " + mimeType);
                }
                openSearchDescription.DefaultUrl = openSearchDescriptionUrl;
            } catch (InvalidOperationException ex) {
                if (!(ex.InnerException is FileNotFoundException) && !(ex.InnerException is SecurityException) && !(ex.InnerException is UriFormatException)) {
                    openSearchDescription = ose.AutoDiscoverFromQueryUrl(new OpenSearchUrl(baseUrl));
                    urlBasedOpenSearchableFactory = new UrlBasedOpenSearchableFactory(ose, soft);
                    result = urlBasedOpenSearchableFactory.Create(url);
                    if (string.IsNullOrEmpty(mimeType))
                        return result;
                    var murl = openSearchDescription.Url.FirstOrDefault((OpenSearchDescriptionUrl u) => u.Type == mimeType);
                    if (murl != null)
                        result.GetOpenSearchDescription().DefaultUrl = murl;

                    return result;
                }
                try {
                    url = new OpenSearchUrl(new Uri(baseUrl, "/description"));
                    openSearchDescription = OpenSearchFactory.LoadOpenSearchDescriptionDocument(url);
                } catch {
                    try {
                        url = new OpenSearchUrl(new Uri(baseUrl, "/OSDD"));
                        openSearchDescription = OpenSearchFactory.LoadOpenSearchDescriptionDocument(url);
                    } catch {
                        throw new EntryPointNotFoundException(string.Format("No OpenSearch description found around {0}", baseUrl));
                    }
                }
            }
            if (openSearchDescription == null) {
                throw new EntryPointNotFoundException(string.Format("No OpenSearch description found around {0}", baseUrl));
            }
            urlBasedOpenSearchableFactory = new UrlBasedOpenSearchableFactory(ose, soft);
            result = urlBasedOpenSearchableFactory.Create(openSearchDescription);
            return result;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="Terradue.OpenSearch.GenericOpenSearchable"/> class from a quaery Url
 /// </summary>
 /// <param name="url">The query URL</param>
 /// <param name="ose">An OpenSearchEngine instance, preferably with registered extensions able to read the query url</param>
 public GenericOpenSearchable(OpenSearchUrl url, OpenSearchEngine ose)
 {
     this.url = url;
     this.ose = ose;
     this.osd = ose.AutoDiscoverFromQueryUrl(url);
 }