Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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)));
        }
Ejemplo n.º 3
0
        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
            }));
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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)));
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        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);
            }
        }
Ejemplo n.º 8
0
        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
            }));
        }
Ejemplo n.º 9
0
        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));
        }