public virtual async Task <bool> MarkStepOpened(Guid instId, int stepNum, string closedByUser) { var instance = await GetInstance(instId); var closedStepId = instance.ClosedSteps.FirstOrDefault(x => x.Step == stepNum)?.Uuid; var requestBody = new { stepId = closedStepId, valid = true }; var jResult = _amqpService.RequestReply(requestBody, "ToDoMarkStepOpen", RequestQueue, null, true); //TODO fix this in API if (jResult == null) { return(true); } var response = AmqpApiUtils.ParseApiResult(jResult); if (!response.ResponseObject.ContainsKey("stepId")) { throw new AmqpApiException("Could not read ApiResponse"); } var stepId = response.ResponseObject["stepId"].ToObject <Guid>(); return(true); }
private Task <AmqpApiResponse> PostResource(string queue, string action, object resourceBody, Stream uploadStream) { var jObject = JObject.FromObject(resourceBody); var ms = new MemoryStream(); uploadStream.CopyTo(ms); var base64String = Convert.ToBase64String(ms.ToArray()); jObject["body"] = base64String; var jResult = _amqpService.RequestReply(jObject, action, queue); return(Task.FromResult(AmqpApiUtils.ParseApiResult(jResult))); }
public virtual Task <TodoListInstanceDto> GetInstance(Guid id) { var requestBody = new { instanceId = id.ToString() }; var jResult = _amqpService.RequestReply(requestBody, "ToDoGetInstanceDetails", RequestQueue); var response = AmqpApiUtils.ParseApiResult(jResult); if (!response.ResponseObject.ContainsKey("instance")) { throw new AmqpApiException("Could not read ApiResponse"); } var instance = response.ResponseObject["instance"].ToObject <TodoListInstanceHeaderDto>(); if (!response.ResponseObject.ContainsKey("closedSteps")) { throw new AmqpApiException("Could not read ApiResponse"); } var closedStep = response.ResponseObject["closedSteps"].ToObject <TodoListClosedStep[]>(); if (!response.ResponseObject.ContainsKey("steps")) { throw new AmqpApiException("Could not read ApiResponse"); } var steps = response.ResponseObject["steps"].ToObject <TodoApiStep[]>(); var steps2 = steps.Select(x => new TodoListStep { //TODO rename properties in app Description = x.Description, Name = x.Name, Number = x.Step, Resource = x.Resource }).ToList(); return(Task.FromResult(new TodoListInstanceDto { Instance = instance, ClosedSteps = closedStep, Steps = steps2 })); }
public virtual Task <IEnumerable <TodoListHeader> > GetLists(string contextDomain) { var requestBody = new { context = new { }, domain = contextDomain }; var jResult = _amqpService.RequestReply(requestBody, "ToDoFind", RequestQueue); var response = AmqpApiUtils.ParseApiResult(jResult); if (!response.ResponseObject.ContainsKey("headers")) { throw new AmqpApiException("Could not read ApiResponse"); } var todoListHeaders = response.ResponseObject["headers"].ToObject <TodoListHeader[]>().AsEnumerable(); return(Task.FromResult(todoListHeaders)); }
protected Task <Tuple <JObject, Stream> > GetResource(string queue, string action, object requestBody) { var jResult = _amqpService.RequestReply(requestBody, action, queue); var response = AmqpApiUtils.ParseApiResult(jResult); if (!response.ResponseObject?.ContainsKey("body") ?? true) { throw new AmqpApiException("Could not read ApiResponse: body not set!"); } var obj = response.ResponseObject; var data = System.Convert.FromBase64String(response.ResponseObject["body"].ToObject <string>()); obj["body"] = null; obj["size"] = data.LongLength; obj["etag"] = GenerateEtag(data); var ms = new MemoryStream(data); return(Task.FromResult(new Tuple <JObject, Stream>(obj, ms))); }
public virtual Task <Guid> MarkStepClosed(Guid instId, int stepNum, string closedByUser) { var requestBody = new { closedBy = closedByUser, instanceId = instId.ToString(), step = stepNum }; var jResult = _amqpService.RequestReply(requestBody, "ToDoMarkStepClosed", RequestQueue); var response = AmqpApiUtils.ParseApiResult(jResult); if (!response.ResponseObject.ContainsKey("stepId")) { throw new AmqpApiException("Could not read ApiResponse"); } var stepId = response.ResponseObject["stepId"].ToObject <Guid>(); return(Task.FromResult(stepId)); }
private void DynamicRequestLargePayload(int sizeKB, string requestQueue = "Resources", TimeSpan?timeout = null, bool checkHashInPayload = false) { //generate large payload var rand = new Random(System.DateTimeOffset.Now.Millisecond); var ms = new MemoryStream(); var buffer = new byte[1024]; for (var written = 0L; written < sizeKB; written++) { rand.NextBytes(buffer); ms.Write(buffer); } var base64String = Convert.ToBase64String(ms.ToArray()); var msg = new { name = $"rand{sizeKB}KB.bin", mimeType = "application/octet-stream", body = base64String }; var response = Fixture.AmqpService.RequestReply(msg, "PutResource", requestQueue, timeout); Assert.NotNull(response); var amqpApiResponse = AmqpApiUtils.ParseApiResult(response); Assert.NotNull(amqpApiResponse); Assert.NotNull(amqpApiResponse.ResponseObject); Assert.NotNull(amqpApiResponse.ResponseObject["uuid"]); var guid = Guid.Parse(amqpApiResponse.ResponseObject["uuid"].ToObject <string>()); if (checkHashInPayload) { Assert.NotNull(amqpApiResponse.ResponseObject["hash"]); var hash = amqpApiResponse.ResponseObject["hash"]; var referenceHash = ServiceMock.Hash64Str(base64String); Assert.Equal(referenceHash, hash); } }
public virtual Task <TodoListDetails> GetList(string listId, string contextDomain) { var requestBody = new { id = listId, domain = contextDomain }; var jResult = _amqpService.RequestReply(requestBody, "ToDoGetDetails", RequestQueue); var response = AmqpApiUtils.ParseApiResult(jResult); if (!response.ResponseObject.ContainsKey("header")) { throw new AmqpApiException("Could not read ApiResponse"); } var todoListHeader = response.ResponseObject["header"].ToObject <TodoListHeader>(); if (!response.ResponseObject.ContainsKey("steps")) { throw new AmqpApiException("Could not read ApiResponse"); } var todoListSteps = response.ResponseObject["steps"].ToObject <TodoApiStep[]>(); var steps2 = todoListSteps.Select(x => new TodoListStep { //TODO rename properties in app Description = x.Description, Name = x.Name, Number = x.Step, Resource = x.Resource }).ToList(); return(Task.FromResult(new TodoListDetails { Header = todoListHeader, Steps = steps2 })); }
public virtual Task <Guid> StartInstance(string todoListId, string contextDomain, string startedByUser, JObject context) { var requestBody = new { context, definitionId = todoListId, domain = contextDomain, startedBy = startedByUser }; var jResult = _amqpService.RequestReply(requestBody, "ToDoStartInstance", RequestQueue); var response = AmqpApiUtils.ParseApiResult(jResult); if (!response.ResponseObject.ContainsKey("instanceId")) { throw new AmqpApiException("Could not read ApiResponse"); } var instanceId = response.ResponseObject["instanceId"].ToObject <Guid>(); return(Task.FromResult(instanceId)); }