public async Task <IEnumerable <Todo> > GetList() { var ns = this._config["NAMESPACE"]; var request = new HttpRequestMessage( HttpMethod.Get, string.Format("http://localhost:8080/apis/k8sasbackend.com/v1/namespaces/{0}/todos", ns)); request.Headers.Add("Accept", "application/json"); request.Headers.Add("User-Agent", "TodoApp"); //AddBearerToken(request); var client = _clientFactory.CreateClient(); var response = await client.SendAsync(request); Todo[] todos; if (response.IsSuccessStatusCode) { var responseContent = await response.Content.ReadAsStringAsync(); _logger.LogDebug(responseContent); var svc = new k8s.TodoService(client); var todoList = svc.Convert <TodoList>(responseContent); var list = new List <Todo>(); foreach (var item in todoList.Items) { list.Add(new Todo { Id = new Guid(item.Metadata.Uid), Code = item.Metadata.Name, When = item.Spec.When.Value, Message = item.Spec.Message }); } todos = list.ToArray(); } else { todos = Array.Empty <Todo>(); } return(todos); }
public async Task <ActionResult <Todo> > CreateTodo(Todo dto) { var ns = this._config["NAMESPACE"]; var crd = new k8s.Models.Todo { ApiVersion = "k8sasbackend.com/v1", Kind = "Todo", Metadata = new V1ObjectMeta { Name = dto.Code, NamespaceProperty = ns, }, Spec = new TodoSpec { Message = dto.Message, When = dto.When.ToUniversalTime() } }; var client = _clientFactory.CreateClient(); var svc = new k8s.TodoService(client); var json = svc.Serialize(crd); using var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); //TODO: make namespace as env variable var url = string.Format("http://localhost:8080/apis/k8sasbackend.com/v1/namespaces/{0}/todos", ns); _logger.LogDebug("posting todo resource to {0}", url); var request = new HttpRequestMessage( HttpMethod.Post, url); request.Headers.Add("Accept", "application/json"); request.Headers.Add("User-Agent", "TodoApp"); //AddBearerToken(request); request.Content = stringContent; var response = await client.SendAsync(request); var responseContent = await response.Content.ReadAsStringAsync(); _logger.LogDebug(responseContent); if (response.IsSuccessStatusCode) { var todoCrd = svc.Convert <k8s.Models.Todo>(responseContent); return(new Todo { Id = new Guid(todoCrd.Metadata.Uid), Message = todoCrd.Spec.Message, When = todoCrd.Spec.When.Value, Code = todoCrd.Metadata.Name }); } else { var status = svc.Convert <k8s.Models.V1Status>(responseContent); return(BadRequest(new{ message = status.Message, code = status.Code, status = status.Status, })); } }