예제 #1
0
        public IHttpActionResult GetSmoothConfigurationForBestBreakFactorGroups([FromUri] int id)
        {
            // Get Smooth configuration
            var smoothConfiguration = _smoothConfigurationRepository.GetById(id);

            if (smoothConfiguration == null)
            {
                return(NotFound());
            }

            string exportFile = Path.Combine(System.Web.Hosting.HostingEnvironment.MapPath("/Temp"), "smooth_config_best_break_factor_groups.txt");

            try
            {
                // Export
                SmoothConfigurationCSVExporter smoothConfigurationExporter = new SmoothConfigurationCSVExporter(smoothConfiguration, (Char)9);
                smoothConfigurationExporter.ExportBestBreakFactorGroups(exportFile);

                // Return exported file
                System.Web.Http.Results.ResponseMessageResult result = GetFile(exportFile, GetCompressionFormatForResponse(Request, new string[] { "gzip" }), true);
                if (result == null)
                {
                    return(NotFound());
                }

                return(result);
            }
            finally
            {
                if (File.Exists(exportFile))
                {
                    File.Delete(exportFile);
                }
            }
        }
예제 #2
0
        // DELETE api/Hack/
        public async Task <IHttpActionResult> Delete(int Id)
        {
            bool result = _hackRepository.Delete(Id);

            ResponseMessageResult response = null;

            // TODO: Create a CUSTOM HTTP ERROR CODES
            if (result)
            {
                response = new System.Web.Http.Results.ResponseMessageResult(
                    Request.CreateResponse((HttpStatusCode)211,
                                           new HttpError("SupaDeleted!")
                                           )
                    );
            }
            else
            {
                response = new System.Web.Http.Results.ResponseMessageResult(
                    Request.CreateErrorResponse((HttpStatusCode)497,
                                                new HttpError("Not today. Try the DELETE later.")
                                                )
                    );
            }

            return(response);
        }
예제 #3
0
        // PUT api/Hack/
        public async Task <IHttpActionResult> Put(Hack hack)
        {
            bool result = _hackRepository.Update(hack);

            ResponseMessageResult response = null;

            // TODO: Create a CUSTOM HTTP ERROR CODES
            if (result)
            {
                response = new System.Web.Http.Results.ResponseMessageResult(
                    Request.CreateResponse((HttpStatusCode)210,
                                           new HttpError("SupaHack updated correctly. Well done!")
                                           )
                    );
            }
            else
            {
                response = new System.Web.Http.Results.ResponseMessageResult(
                    Request.CreateErrorResponse((HttpStatusCode)496,
                                                new HttpError("Not this time...")
                                                )
                    );
            }

            return(response);
        }
예제 #4
0
        // POST api/Hack/
        public async Task <IHttpActionResult> Post(Hack hack)
        {
            bool result = _hackRepository.Add(hack);

            ResponseMessageResult response = null;

            // TODO: Create a CUSTOM HTTP ERROR CODES
            if (result)
            {
                response = new System.Web.Http.Results.ResponseMessageResult(
                    Request.CreateResponse((HttpStatusCode)209,
                                           new HttpError("SupaHack created correctly + Extra Hidden Hacks!")
                                           )
                    );
            }
            else
            {
                response = new System.Web.Http.Results.ResponseMessageResult(
                    Request.CreateErrorResponse((HttpStatusCode)495,
                                                new HttpError("Such a petition bro! It didn't work!")
                                                )
                    );
            }

            return(response);
        }
예제 #5
0
        protected IHttpActionResult NoOK(string statusCode)
        {
            var x = new System.Web.Http.Results.ResponseMessageResult(
                Request.CreateErrorResponse(
                    (HttpStatusCode)422,
                    new HttpError(statusCode)
                    )
                );

            x.Response.Headers.Add(EwHeaders.X_Status, statusCode);
            return(x);
        }
예제 #6
0
        protected IHttpActionResult BadRequest()
        {
            var x = new System.Web.Http.Results.ResponseMessageResult(
                Request.CreateErrorResponse(
                    (HttpStatusCode)400,
                    new HttpError(GlobalStatus.InvalidData.ToString())
                    )
                );

            x.Response.Headers.Add(EwHeaders.X_Status, GlobalStatus.InvalidData.ToString());
            return(x);
        }
        public void Response_Returns_InstanceProvided()
        {
            // Arrange
            using (HttpResponseMessage expectedResponse = CreateResponse())
            {
                ResponseMessageResult result = new ResponseMessageResult(expectedResponse);

                // Act
                HttpResponseMessage response = result.Response;

                // Assert
                Assert.Same(expectedResponse, response);
            }
        }
예제 #8
0
        protected IHttpActionResult Pagination <T>(T data, int totalItems = 0, int limit = 20, int page = 1)
        {
            var x = new System.Web.Http.Results.ResponseMessageResult(
                Request.CreateResponse(HttpStatusCode.OK, data)
                );

            int totalPage = totalItems / limit;

            totalPage = totalItems % limit == 0 ? totalPage : (totalPage + 1);

            x.Response.Headers.Add(EwHeaders.X_Paging_Total_Count, totalItems.ToString());
            x.Response.Headers.Add(EwHeaders.X_Paging_Limit, limit.ToString());
            x.Response.Headers.Add(EwHeaders.X_Paging_Total_Pages, totalPage.ToString());
            x.Response.Headers.Add(EwHeaders.X_Paging_Current_Page, page.ToString());
            x.Response.Headers.Add(EwHeaders.X_Status, HttpStatusCode.OK.ToString());
            return(x);
        }
예제 #9
0
        public async Task ExecuteAsync_Returns_InstanceProvided()
        {
            // Arrange
            using (HttpResponseMessage expectedResponse = CreateResponse())
            {
                IHttpActionResult result = new ResponseMessageResult(expectedResponse);

                // Act
                Task <HttpResponseMessage> task = result.ExecuteAsync(CancellationToken.None);

                // Assert
                Assert.NotNull(task);

                using (HttpResponseMessage response = await task)
                {
                    Assert.Same(expectedResponse, response);
                }
            }
        }
        public void ExecuteAsync_Returns_InstanceProvided()
        {
            // Arrange
            using (HttpResponseMessage expectedResponse = CreateResponse())
            {
                IHttpActionResult result = new ResponseMessageResult(expectedResponse);

                // Act
                Task<HttpResponseMessage> task = result.ExecuteAsync(CancellationToken.None);

                // Assert
                Assert.NotNull(task);
                task.WaitUntilCompleted();

                using (HttpResponseMessage response = task.Result)
                {
                    Assert.Same(expectedResponse, response);
                }
            }
        }
예제 #11
0
        public override void Handle(ExceptionHandlerContext context)
        {
            var tmp = context.Exception;
            var messages = new List<string>();
            while (tmp != null)
            {
                messages.Add(tmp.Message);
                tmp = tmp.InnerException;
            }
            var result = new ResponseMessageResult(new HttpResponseMessage(HttpStatusCode.BadRequest)
            {
                Content = new ObjectContent<ErrorResponse>(new ErrorResponse
                {
                    Message = Join(" -> ", messages)
                }, new JsonMediaTypeFormatter())
            });

            if (context.Exception is NullReferenceException)
                ((ErrorResponse) ((ObjectContent<ErrorResponse>) result.Response.Content).Value).Message =
                    "Empty request(NullReferenceException)";

            context.Result = result;
        }