private void DoPullArtifact() { Artifact selectedArtifact = (Artifact)this.versionsLB.SelectedItem; Type type = (Type)this.archetypesLB.SelectedItem; HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(new Uri(XowlUtils.xowlApi + "services/storage/sparql?store=longTerm")); req.CookieContainer = XowlUtils.cookies; req.ContentType = "application/sparql-query"; req.Accept = "application/json"; req.Method = "POST"; string sparqlRequest = XowlUtils.ToSparqlQuery(type, selectedArtifact); byte[] bytes = Encoding.UTF8.GetBytes(sparqlRequest); req.ContentLength = bytes.Length; System.IO.Stream os = req.GetRequestStream(); os.Write(bytes, 0, bytes.Length); os.Close(); try { HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()); string r = sr.ReadToEnd().Trim(); processJsonResponse(r, type); System.Diagnostics.Debug.WriteLine(r); } catch (WebException ex) { //TODO: take into account the code of the exception to execute appropriate actions XowlUtils.Connect(); //DoPullArtifact();//FIXME: improve management of cookies } }
private void DoPushArtifact() { System.Diagnostics.Debug.WriteLine("Pushing data to collaboration"); Type type = (Type)this.archetypesLB.SelectedItem; string archetype = "org.xowl.platform.kernel.artifacts.ArtifactArchetypeFree"; //FIXME: ensure unicity of version for the same name and within the same base string baseUri = (string)Properties.Settings.Default["baseUri"]; string name = type.Name.ToLower(); string baseArtifact = baseUri + name; string version = this.artifactVersionTB.Text.Trim(); string parameters; if (this.supersededLB.SelectedIndex == -1) { parameters = $"name={name}&base={baseArtifact}&version={version}&archetype={archetype}"; } else { string superseded = this.supersededLB.SelectedItem.ToString(); parameters = $"name={name}&base={baseArtifact}&version={version}&archetype={archetype}&superseded={superseded}"; } HttpWebRequest xowlReq = (HttpWebRequest)HttpWebRequest.Create(new Uri(XowlUtils.xowlApi + "connectors/generics/sw?" + parameters)); xowlReq.CookieContainer = XowlUtils.cookies; xowlReq.ContentType = "application/ld+json"; xowlReq.Accept = "application/json"; xowlReq.Method = "POST"; string body = this.ToJsonLD(type); byte[] bytes = Encoding.UTF8.GetBytes(body); xowlReq.ContentLength = bytes.Length; System.IO.Stream os = xowlReq.GetRequestStream(); os.Write(bytes, 0, bytes.Length); os.Close(); try { HttpWebResponse resp = (HttpWebResponse)xowlReq.GetResponse(); System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()); string r = sr.ReadToEnd().Trim(); System.Diagnostics.Debug.WriteLine(r); xowlReq = (HttpWebRequest)HttpWebRequest.Create(new Uri(XowlUtils.xowlApi + "connectors/generics/pull")); xowlReq.CookieContainer = XowlUtils.cookies; xowlReq.ContentType = "application/ld+json"; xowlReq.Accept = "application/json"; xowlReq.Method = "POST"; resp = (HttpWebResponse)xowlReq.GetResponse(); } catch (WebException ex) { //TODO: take into account the code of the exception to execute appropriate actions XowlUtils.Connect(); //DoPushArtifact();//FIXME: improve management of cookies } //FIXME: improve scheduling of notifications ActivitiProcessManager pm = new ActivitiProcessManager(); pm.CompleteTaskForData(type); }
public string ToJsonLD() { StringBuilder sb = new StringBuilder(); Type type = this.GetType(); string className = type.Name; string baseUri = XowlUtils.GetBaseUri(type); PropertyInfo[] properties = this.GetType().GetProperties().OrderBy(p => p.MetadataToken).ToArray(); sb.Append("{"); sb.Append($"\"@id\":\"{baseUri}"); sb.Append(this.UUID); sb.Append("\", \"@type\":\""); sb.Append(baseUri + className); sb.Append("\","); PropertyInfo property; Type propertyType; for (int i = 1; i < properties.Length; i++) { property = properties[i]; propertyType = property.PropertyType; string name = property.Name.ToLower(); string value = property.GetValue(this).ToString(); string typeName = property.PropertyType.Name; if (typeName.Equals("Double")) { value = value.Replace(',', '.'); } if (typeName.Equals("Boolean")) { if (value.Equals("True")) { value = "true"; } else { value = "false"; } } if (typeName.Equals("String")) { sb.Append($"\"{baseUri}{name}\":\"{value}\""); } else { sb.Append($"\"{baseUri}{name}\":{value}"); } if (i == properties.Length - 1) { sb.Append("}"); } else { sb.Append(","); } } return(sb.ToString()); }
public PushWizard() { InitializeComponent(); if (XowlUtils.cookies == null) { XowlUtils.Connect(); } this.artifacts = XowlUtils.RetrieveArtifacts(false); this.archetypesLB.DataSource = XowlUtils.GetClassesFromNameSpace("BusinessData"); this.archetypesLB.DisplayMember = "Name"; this.archetypesLB.SelectedIndex = 0; }