/// <summary> /// Finds an existing item by IFC identifier /// </summary> /// <param name="baseurl"></param> /// <param name="sessionid"></param> /// <param name="identifier"></param> /// <returns></returns> public static IfdConcept SearchConcept(string baseurl, string sessionid, string identifier, IfdConceptTypeEnum type) { try { string url = baseurl + "api/4.0/IfdConcept/search/filter/language/" + LanguageID + "/type/" + type.ToString() + "/" + identifier; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); request.Method = "GET"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = 0; request.Accept = "application/json"; request.Headers.Add("cookie", "peregrineapisessionid=" + sessionid); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings(); DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(ResponseSearch)); ResponseSearch search = (ResponseSearch)ser.ReadObject(stream); if (search != null && search.IfdConcept != null && search.IfdConcept.Length > 0) { return(search.IfdConcept[0]); } } catch (Exception xx) { System.Diagnostics.Debug.WriteLine(xx.Message); } return(null); }
public static void Download(DocProject project, BackgroundWorker worker, string baseurl, string username, string password, DocModelView[] docViews) { string sessionid = Connect(project, worker, baseurl, username, password); if (sessionid == null) { return; } //foreach (DocModelView docView in docViews) string page = null; do { //string url = baseurl + "api/4.0/IfdContext/" + SGuid.Format(docView.Uuid); string url = baseurl + "api/4.0/IfdConcept/filter/SUBJECT"; // ifc-2X4 //string url = baseurl + "api/4.0/IfdConcept/search/filter/language/1ASQw0qJqHuO00025QrE$V/*";//type/SUBJECT/*"; if (page != null) { url += "?page=" + page; } HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); request.Accept = "application/json"; request.Headers.Add("cookie", "peregrineapisessionid=" + sessionid); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); page = response.Headers.Get("Next-Page"); System.Diagnostics.Debug.WriteLine(page); ResponseSearch responseSearch = null; try { DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings(); DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(ResponseSearch)); responseSearch = (ResponseSearch)ser.ReadObject(stream); if (responseSearch != null) { responseSearch.ToString(); foreach (IfdConcept ifdConcept in responseSearch.IfdConcept) { DocModelView docView = new DocModelView(); if (ifdConcept.shortNames != null) { foreach (IfdName ifdName in ifdConcept.shortNames) { DocLocalization docLoc = new DocLocalization(); docLoc.Locale = ifdName.language.languageCode; docLoc.Name = ifdName.name; docView.Localization.Add(docLoc); if (ifdName.language.languageCode == "en") { docView.Name = ifdName.name; } } } else if (ifdConcept.fullNames != null) { ifdConcept.ToString(); } docView.Uuid = SGuid.Parse(ifdConcept.guid); docView.Version = ifdConcept.versionId; docView.Copyright = ifdConcept.versionDate; docView.Status = ifdConcept.status; //docView.Owner = ifdConcept.owner; //docView.Documentation = ifdConcept.comments project.ModelViews.Add(docView); ifdConcept.ToString(); } //foreach (IfdDescription ifcDesc in ifdContext.definitions) { // create/update concept root //... } } } catch (Exception xx) { xx.ToString(); } }while (!String.IsNullOrEmpty(page)); }