public async Task <IAssociation> AssociateAsync(INode otherNode, QName associationTypeQName, Directionality directionality, JObject data) { if (data == null) { data = new JObject(); } string uri = URI + "/associate"; IDictionary <string, string> queryParams = new Dictionary <string, string>(); queryParams.Add("node", otherNode.Id); queryParams.Add("type", associationTypeQName.ToString()); if (!directionality.Equals(Directionality.DIRECTED)) { queryParams.Add("directionality", directionality.ToString()); } JObject response1 = await Driver.PostAsync(uri, queryParams); string associationId = (string)response1["_doc"]; // Read back association object JObject response2 = await Driver.GetAsync(Branch.URI + "/nodes/" + associationId); Association association = new Association(Branch, response2); return(association); }
public async Task <List <IAssociation> > AssociationsAsync(QName associationTypeQName, Direction direction, JObject pagination = null) { if (pagination == null) { pagination = new JObject(); } string uri = URI + "/associations"; IDictionary <string, string> queryParams = pagination.ToObject <Dictionary <string, string> >(); queryParams.Add("direction", direction.ToString()); if (associationTypeQName != null) { queryParams.Add("type", associationTypeQName.ToString()); } JObject response = await Driver.GetAsync(uri, queryParams); JArray associationArray = (JArray)response.SelectToken("rows"); List <IAssociation> associations = AssociationUtil.AssociationList(associationArray, Branch); return(associations); }
public async Task ChangeQNameAsync(QName newQName) { string uri = URI + "/change_qname"; IDictionary <string, string> queryParams = new Dictionary <string, string>(); queryParams.Add("qname", newQName.ToString()); await Driver.PostAsync(uri, queryParams, new JObject()); }
public async Task <List <IBaseNode> > QueryRelativesAsync(QName type, Direction direction, JObject query, JObject pagination = null) { pagination ??= new JObject(); string uri = URI + "/relatives/query"; Dictionary <string, string> queryParams = pagination.ToObject <Dictionary <string, string> >(); queryParams.Add("type", type.ToString()); queryParams.Add("direction", direction.ToString()); HttpContent content = new StringContent(query.ToString()); JObject response = await Driver.PostAsync(uri, queryParams, content); return(NodeUtil.NodeList(response, Branch)); }
public async Task <List <IBaseNode> > ListRelativesAsync(QName type, Direction direction, JObject pagination = null) { string uri = URI + "/relatives"; pagination ??= new JObject(); Dictionary <string, string> queryParams = pagination.ToObject <Dictionary <string, string> >(); queryParams.Add("type", type.ToString()); queryParams.Add("direction", direction.ToString()); JObject response = await Driver.GetAsync(uri, queryParams); return(NodeUtil.NodeList(response, Branch)); }
public Task UnassociateAsync(INode targetNode, QName associationTypeQName, Directionality directionality) { string uri = URI + "/unassociate"; IDictionary <string, string> queryParams = new Dictionary <string, string>(); queryParams.Add("node", targetNode.Id); queryParams.Add("type", associationTypeQName.ToString()); if (!directionality.Equals(Directionality.DIRECTED)) { queryParams.Add("directionality", directionality.ToString()); } return(Driver.PostAsync(uri, queryParams)); }