示例#1
0
        public object Post(CreateQueue request)
        {
            IDbTransaction transaction = Db.OpenTransaction();

            try
            {
                CreatingQueue.Create(request);
            }
            catch (QueueAlreadyExistsException)
            {
                return(new HttpError(HttpStatusCode.Conflict, $"Queue {request.Name} already exists"));
            }
            catch (BadRequestException)
            {
                return(new HttpError(HttpStatusCode.BadRequest, "BadRequest"));
            }
            finally
            {
                transaction.Commit();
            }

            return(new HttpResult(new CreateQueueResponse())
            {
                StatusCode = HttpStatusCode.Created,
                Headers =
                {
                    { HttpHeaders.Location, base.Request.AbsoluteUri.CombineWith(request.Name) }
                }
            });
        }
示例#2
0
        public void Create(CreateQueue request)
        {
            var requestToSend = new RestRequest("queues", Method.POST);

            requestToSend.AddParameter("Name", request.Name);

            if (QueuesQueries.QueueExists(DBConnection, request.Name))
            {
                throw new QueueAlreadyExistsException();
            }
            else
            {
                Worker worker, coworker;
                CalculateQueueWorkers(request.Name, out worker, out coworker);
                var queue = QueuesQueries.CreateQueue(DBConnection, request.Name, worker.Id, coworker.Id);
                PropageteRequestToWorkers(requestToSend, queue, worker, coworker);
            }
        }