public async Task <IActionResult> Get() { Uri serviceName = BlogRestApi.GetBlogDataServiceName(this.serviceContext); Uri proxyAddress = this.GetProxyAddress(serviceName); ServicePartitionList partitions = await this.fabricClient.QueryManager.GetPartitionListAsync(serviceName); List <KeyValuePair <string, Post> > result = new List <KeyValuePair <string, Post> >(); foreach (Partition partition in partitions) { string proxyUrl = $"{proxyAddress}/api/Posts?PartitionKey={((Int64RangePartitionInformation)partition.PartitionInformation).LowKey}&PartitionKind=Int64Range"; using (HttpResponseMessage response = await this.httpClient.GetAsync(proxyUrl)) { if (response.StatusCode != System.Net.HttpStatusCode.OK) { continue; } result.AddRange(JsonConvert.DeserializeObject <List <KeyValuePair <string, Post> > >(await response.Content.ReadAsStringAsync())); } } return(this.Json(result)); }
public async Task <IActionResult> Create([FromBody] PostsRequest request) { Uri serviceName = BlogRestApi.GetBlogDataServiceName(this.serviceContext); Uri proxyAddress = this.GetProxyAddress(serviceName); long partitionKey = this.GetPartitionKey(request.message); string proxyUrl = $"{proxyAddress}/api/Posts?PartitionKey={partitionKey}&PartitionKind=Int64Range"; var postRequest = JsonConvert.SerializeObject(request); var buffer = System.Text.Encoding.UTF8.GetBytes(postRequest); var byteContent = new ByteArrayContent(buffer); byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); using (HttpResponseMessage response = await this.httpClient.PostAsync(proxyUrl, byteContent)) { if (response.StatusCode != System.Net.HttpStatusCode.OK) { return(this.StatusCode((int)response.StatusCode)); } } return(new OkResult()); }