public async Task <ServerDTO> CreateServer(string name, string imageRef, string flavorRef, string idNetwork) { var payload = new ComputeDTO { Server = new ServerDTO { ImageRef = imageRef, Name = name, Networks = new NetworkDTO[] { new NetworkDTO { Uuid = idNetwork } }, FlavorRef = flavorRef, } }; var server = await HttpClientPostComputeApi <ServerDTO>(_configuration, "servers", "server", payload); return(server); }
public async Task <A> HttpClientPostComputeApi <A>(IConfiguration configuration, string endPoint, string propertyReturn, ComputeDTO payload) { var client = _httpClientFactory.CreateClient("ComputeAPI"); client.DefaultRequestHeaders.TryAddWithoutValidation("X-Auth-Token", await GetOpenstackToken(configuration)); var jsonSerializerSettings = new JsonSerializerSettings(); jsonSerializerSettings.MissingMemberHandling = MissingMemberHandling.Ignore; var stringPayload = await Task.Run(() => JsonConvert.SerializeObject(payload, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore })); var httpContent = new StringContent(stringPayload, Encoding.UTF8, "application/json"); httpContent.Headers.ContentLength = stringPayload.Length; var response = await client.PostAsync(client.BaseAddress + endPoint, httpContent); response.EnsureSuccessStatusCode(); string conteudo = JObject.Parse(response.Content.ReadAsStringAsync().Result).ToString(); var parsedObject = JObject.Parse(conteudo); conteudo = parsedObject[propertyReturn].ToString(); A retorno = JsonConvert.DeserializeObject <A>(conteudo, jsonSerializerSettings); return(retorno); }