/** * Update single entity but only the changed fields */ public async Task <JToken> PatchItemAsync(string entityTypeName, Dto item) { var entitySetName = this.metadataCli.EntityTypes[entityTypeName].EntitySetName; var keyNames = this.metadataCli.EntityTypes[entityTypeName].Key; var url = this.apiUrl + "/crud/" + entitySetName + "?" + QueryUtils.RenderQueryString(new QueryObject() { Keys = (new List <Dto> { DataAdapterUtils.GetKeyFromData(keyNames, (Dto)item["partialEntity"]) }).ToArray() }); // Info credit: http://benfoster.io/blog/adding-patch-support-to-httpclient HttpRequestMessage request; var jsonPatchItem = JsonConvert.SerializeObject(item["patchItem"]); using (var content = new StringContent(jsonPatchItem, Encoding.UTF8, "application/json")) { request = new HttpRequestMessage(new HttpMethod("PATCH"), url) { Content = content }; } var response = await this.client.SendAsync(request); if (response.IsSuccessStatusCode) { var json = await response.Content.ReadAsStringAsync(); var resultSingleSerialDataToken = JToken.Parse(json); return(resultSingleSerialDataToken); } return(null); }
/** * Query entity collection */ public async Task <JToken> QueryAllAsync(string entityTypeName, QueryObject queryObject) { var entitySetName = this.metadataCli.EntityTypes[entityTypeName].EntitySetName; var url = this.apiUrl + "/crud/" + entitySetName + "?" + QueryUtils.RenderQueryString(queryObject); var response = await this.client.GetAsync(url); if (response.IsSuccessStatusCode) { var json = await response.Content.ReadAsStringAsync(); var resultSerialResponseToken = JToken.Parse(json); return(resultSerialResponseToken); } return(null); }
/** * Delete single entity */ public async Task <JToken> DeleteItemAsync(string entityTypeName, Dto partialEntity) { var entitySetName = this.metadataCli.EntityTypes[entityTypeName].EntitySetName; var keyNames = this.metadataCli.EntityTypes[entityTypeName].Key; var url = this.apiUrl + "/crud/" + entitySetName + "?" + QueryUtils.RenderQueryString(new QueryObject() { Keys = new List <Dto>() { DataAdapterUtils.GetKeyFromData(keyNames, partialEntity) }.ToArray() }); var response = await this.client.DeleteAsync(url); if (response.IsSuccessStatusCode) { var json = await response.Content.ReadAsStringAsync(); var resultSingleSerialDataToken = JToken.Parse(json); return(resultSingleSerialDataToken); } return(null); }
/** * Update single entity */ public async Task <JToken> PutItemAsync(string entityTypeName, Dto entity) { var entitySetName = this.metadataCli.EntityTypes[entityTypeName].EntitySetName; var keyNames = this.metadataCli.EntityTypes[entityTypeName].Key; var url = this.apiUrl + "/crud/" + entitySetName + "?" + QueryUtils.RenderQueryString(new QueryObject() { Keys = (new List <Dto>() { DataAdapterUtils.GetKeyFromData(keyNames, entity) }).ToArray() }); var jsonPatchItem = JsonConvert.SerializeObject(entity); var response = await this.client.PutAsync(url, new StringContent(jsonPatchItem, Encoding.UTF8, "application/json")); if (response.IsSuccessStatusCode) { var json = await response.Content.ReadAsStringAsync(); var resultSingleSerialDataToken = JToken.Parse(json); return(resultSingleSerialDataToken); } return(null); }
/** * Entity Function call (a service operation that returns entities and has no side effects) */ public async Task <JToken> CallEntityFunctionAsync(string functionName, Dictionary <string, object> paramsObject, QueryObject queryObject, string returnTypeName, bool returnCollection) { queryObject.Count = returnCollection; var paramsQueryString = DataAdapterUtils.CreateParamsQueryString(paramsObject); var url = this.apiUrl + "/operations/" + functionName + "?" + paramsQueryString + "&" + QueryUtils.RenderQueryString(queryObject); var response = await this.client.GetAsync(url); if (response.IsSuccessStatusCode) { var json = await response.Content.ReadAsStringAsync(); var resultToken = JToken.Parse(json); return(resultToken); } return(null); }
/** * Retrive multiple entities */ public async Task <JToken> LoadManyAsync(string entityTypeName, Dto[] partialDtos, string[] expand) { var entitySetName = this.metadataCli.EntityTypes[entityTypeName].EntitySetName; var keyNames = this.metadataCli.EntityTypes[entityTypeName].Key; var url = this.apiUrl + "/crud/" + "many/" + entitySetName + "?" + QueryUtils.RenderQueryString(new QueryObject() { Keys = DataAdapterUtils.GetKeyFromMultipleData(keyNames, partialDtos).ToArray(), Expand = expand }); var response = await this.client.GetAsync(url); if (response.IsSuccessStatusCode) { var json = await response.Content.ReadAsStringAsync(); var resultSerialDataToken = JToken.Parse(json); return(resultSerialDataToken); } return(null); }