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) } } }); }
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); } }