Ejemplo n.º 1
0
        public async Task <ActionResult <ApiResponse> > AddRemark([FromBody] AddRemarkRequest remark, [FromServices] IRemarksService remarksService, [FromServices] IUserDetailsProvider userDetailsProvider)
        {
            var userDetails = userDetailsProvider.GetUserDetails();
            var response    = await remarksService.AddRemark(userDetails.Email, remark);

            return(ApiResponseHelper.Created("Remark created.", response));
        }
Ejemplo n.º 2
0
        public async Task OnAuthorizationAsync(AuthorizationFilterContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            // Allow Anonymous skips all authorization
            var hasAnonymousFilter     = context.Filters.OfType <IAllowAnonymousFilter>().Any();
            var hasAnonymouseAttribute = context.ActionDescriptor.EndpointMetadata.OfType <AllowAnonymousAttribute>().Any();

            if (hasAnonymousFilter || hasAnonymouseAttribute)
            {
                return;
            }

            var policyEvaluator    = context.HttpContext.RequestServices.GetRequiredService <IPolicyEvaluator>();
            var authenticateResult = await policyEvaluator.AuthenticateAsync(Policy, context.HttpContext);

            var authorizeResult = await policyEvaluator.AuthorizeAsync(Policy, authenticateResult, context.HttpContext, context);

            if (authorizeResult.Challenged)
            {
                context.Result = ApiResponseHelper.Unauthorised("Unauthorised.").Result;
            }
            else if (authorizeResult.Forbidden)
            {
                context.Result = ApiResponseHelper.Forbidden("Forbidden.", Policy.AuthenticationSchemes.ToArray()).Result;
            }
        }
        public async void HandleException_Should_Set_Response_Body_With_DetailedResponse()
        {
            var exception = new Exception("ExceptionMessage");
            var context   = new DefaultHttpContext();

            context.Response.Body = new MemoryStream();
            await _middleware.HandleException(exception, context);

            JToken body;

            context.Response.Body.Seek(0, SeekOrigin.Begin);
            using (var reader = new StreamReader(context.Response.Body))
            {
                var content = await reader.ReadToEndAsync();

                body = JToken.Parse(content);
            }

            var expected = ApiResponseHelper.Error("An unhandled exception has occurred.", exception.Message);
            var result   = (ObjectResult)expected.Result;

            var expectedBody = JToken.FromObject(result.Value, new JsonSerializer {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });

            body.Should().BeEquivalentTo(expectedBody);
        }
        private static async Task <TResult?> GetAsync <TResult>(ApiClientService apiClient, string uri)
        {
            var response = await apiClient.GetAsync <TResult>(uri);

            if (!response.IsSuccess)
            {
                ApiResponseHelper.HandleNotSuccessApiResponse(response);
                return(default);
Ejemplo n.º 5
0
 public void OnActionExecuting(ActionExecutingContext context)
 {
     if (!context.ModelState.IsValid)
     {
         var errors = context.ModelState
                      .Where(m => m.Value.Errors.Any())
                      .Select(m => new { m.Key, m.Value.Errors });
         context.Result = ApiResponseHelper.BadRequest("Invalid request format.", errors).Result;
     }
 }
Ejemplo n.º 6
0
        public async Task <ActionResult <ApiResponse> > GetConditions([FromQuery] string name, [FromQuery] int page, [FromServices] IBittnService bittnService)
        {
            var response = await bittnService.GetConditions(new GetConditionsRequest
            {
                Name      = name,
                PageIndex = page
            });

            return(ApiResponseHelper.Ok <IllnessDetails>($"{response?.Data?.Count() ?? 0} condition(s) found.", response));
        }
Ejemplo n.º 7
0
        public async Task <ActionResult <ApiResponse> > CancelBooking(int bookingId, [FromServices] IBittnService bittnService)
        {
            var response = await bittnService.CancelBooking(new CancelBookingRequest
            {
                BookingId = bookingId
            });

            return(response.Deleted
                ? ApiResponseHelper.Ok("Booking deleted.", response)
                : ApiResponseHelper.Fail("No booking deleted.", response));
        }
Ejemplo n.º 8
0
        public async Task <ActionResult <ApiResponse> > GetBookings([FromQuery] int page, [FromQuery] string sortField, [FromQuery] bool?sortDescending, [FromServices] IBittnService bittnService)
        {
            var response = await bittnService.GetBookings(new GetBookingsRequest
            {
                PageIndex      = page,
                SortField      = sortField,
                SortDescending = sortDescending
            });

            return(ApiResponseHelper.Ok <BookingDetails>($"{response?.Data?.Count() ?? 0} booking(s) found.", response));
        }
Ejemplo n.º 9
0
        public async Task <ActionResult <ApiResponse> > FindHelp([FromBody] FindHelpApiRequest request, [FromServices] IBittnService bittnService)
        {
            var response = await bittnService.FindHelp(new FindHelpRequest
            {
                ConditionId    = request.ConditionId,
                SeverityLevel  = request.Severity,
                PageIndex      = request.Page,
                SortField      = request.SortField,
                SortDescending = request.SortDescending
            });

            return(ApiResponseHelper.Ok <HelpDetails>($"{response?.Data?.Count() ?? 0} help found.", response));
        }
        public virtual async Task HandleException(Exception ex, HttpContext context)
        {
            var message = "An unhandled exception has occurred.";

            var response = ApiResponseHelper.Error(message, ex.Message);

            var result = (ObjectResult)response.Result;

            context.Response.StatusCode  = result.StatusCode ?? StatusCodes.Status500InternalServerError;
            context.Response.ContentType = "application/json";
            await context.Response.WriteAsync(JsonConvert.SerializeObject(result.Value, new JsonSerializerSettings {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            }));
        }
Ejemplo n.º 11
0
        public void ObjectResponse_Should_Return_Correctly()
        {
            var actual = ApiResponseHelper.ObjectResponse(StatusCodes.Status100Continue, true, message: "message", "content");

            actual.Should().BeOfType <ActionResult <ApiResponse> >();

            actual.Result.Should().BeOfType <ObjectResult>();
            actual.Result.As <ObjectResult>().StatusCode.Should().Be(StatusCodes.Status100Continue);

            actual.Result.As <ObjectResult>().Value.Should().BeOfType <ApiResponse>();
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Success.Should().Be(true);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Message.Should().Be("message");
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Data.Should().Be("content");
        }
Ejemplo n.º 12
0
        public async Task <ActionResult <ApiResponse> > BookPatient([FromBody] BookPatientApiRequest request, [FromServices] IBittnService bittnService)
        {
            var response = await bittnService.BookPatient(new BookPatientRequest
            {
                ConditionId   = request.ConditionId,
                ConditionName = request.ConditionName,
                HelpId        = request.HelpId,
                HelpName      = request.HelpName,
                PatientName   = request.PatientName,
                SeverityLevel = request.Severity
            });

            return(ApiResponseHelper.Ok($"Booking created.", response));
        }
Ejemplo n.º 13
0
        public void Created_Should_Return_Correctly()
        {
            var message = "message";
            var actual  = ApiResponseHelper.Created(message);

            actual.Should().BeOfType <ActionResult <ApiResponse> >();

            actual.Result.Should().BeOfType <ObjectResult>();
            actual.Result.As <ObjectResult>().StatusCode.Should().Be(StatusCodes.Status201Created);

            actual.Result.As <ObjectResult>().Value.Should().BeOfType <ApiResponse>();
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Success.Should().Be(true);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Message.Should().Be(message);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Data.Should().BeNull();
        }
Ejemplo n.º 14
0
        public void Error_Should_Return_Correctly()
        {
            var message = "message";
            var actual  = ApiResponseHelper.Error(message);

            actual.Should().BeOfType <ActionResult <ApiResponse> >();

            actual.Result.Should().BeOfType <ObjectResult>();
            actual.Result.As <ObjectResult>().StatusCode.Should().Be(StatusCodes.Status500InternalServerError);

            actual.Result.As <ObjectResult>().Value.Should().BeOfType <ApiResponse>();
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Success.Should().Be(false);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Message.Should().Be(message);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Data.Should().BeNull();
        }
Ejemplo n.º 15
0
        public void Forbidden_Should_Return_Correctly()
        {
            var message = "message";
            var actual  = ApiResponseHelper.Forbidden(message);

            actual.Should().BeOfType <ActionResult <ApiResponse> >();

            actual.Result.Should().BeOfType <ObjectResult>();
            actual.Result.As <ObjectResult>().StatusCode.Should().Be(StatusCodes.Status403Forbidden);

            actual.Result.As <ObjectResult>().Value.Should().BeOfType <ApiResponse>();
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Success.Should().Be(false);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Message.Should().Be(message);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Data.Should().BeNull();
        }
Ejemplo n.º 16
0
        public void Fail_Should_Return_Correctly_With_Data()
        {
            var content = "content";
            var message = "message";
            var actual  = ApiResponseHelper.Fail(message, content);

            actual.Should().BeOfType <ActionResult <ApiResponse> >();

            actual.Result.Should().BeOfType <ObjectResult>();
            actual.Result.As <ObjectResult>().StatusCode.Should().Be(StatusCodes.Status200OK);

            actual.Result.As <ObjectResult>().Value.Should().BeOfType <ApiResponse>();
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Success.Should().Be(false);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Message.Should().Be(message);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Data.Should().Be(content);
        }
Ejemplo n.º 17
0
        public void BadRequest_Should_Return_Correctly()
        {
            var message = "message";
            var actual  = ApiResponseHelper.BadRequest(message);

            actual.Should().BeOfType <ActionResult <ApiResponse> >();

            actual.Result.Should().BeOfType <ObjectResult>();
            actual.Result.As <ObjectResult>().StatusCode.Should().Be(StatusCodes.Status400BadRequest);

            actual.Result.As <ObjectResult>().Value.Should().BeOfType <ApiResponse>();
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Success.Should().Be(false);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Message.Should().Be(message);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Data.Should().BeNull();
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Navigation.Should().BeNull();
        }
Ejemplo n.º 18
0
 public IActionResult SignOut()
 {
     // Initiate the SignOut flow if the user is authenticated
     if (User.Identity.IsAuthenticated)
     {
         var redirectUrl = Request.GetDisplayUrl();
         return(SignOut(new Microsoft.AspNetCore.Authentication.AuthenticationProperties {
             RedirectUri = redirectUrl
         },
                        CookieAuthenticationDefaults.AuthenticationScheme, OpenIdConnectDefaults.AuthenticationScheme));
     }
     else
     {
         // If the user is signed out already, reply with the relevant success message
         return(ApiResponseHelper.GetApiResponse(DataConstant.Authentication202));
     }
 }
Ejemplo n.º 19
0
 public IActionResult AcquireToken()
 {
     // Return the authentication token if the user is authenticated.
     if (HttpContext.User.Identity.IsAuthenticated && !string.IsNullOrWhiteSpace(HttpContext.Session.GetString(DataConstant.IdToken)))
     {
         return(ApiResponseHelper.GetApiResponse(DataConstant.Authentication201, HttpContext.Session.GetString(DataConstant.IdToken)));
     }
     else
     {
         // Redirect to authentication flow if the user is not signed-in
         var redirectUrl = Request.GetDisplayUrl();
         return(Challenge(
                    new Microsoft.AspNetCore.Authentication.AuthenticationProperties {
             RedirectUri = redirectUrl
         },
                    OpenIdConnectDefaults.AuthenticationScheme));
     }
 }
Ejemplo n.º 20
0
        static void Main(string[] args)
        {
            ApiHelper.InitializeClient();

            while (true)
            {
                Console.Clear();
                Console.Write("Enter username: "******"Enter password: "******"\n\n\n");
                    string  token       = ApiResponseHelper.GetToken(loginResult);
                    JObject tokenResult = ApiRequestHelper.GetResultWithToken(token);


                    if (!ApiResponseHelper.IsRequestSucceeded(tokenResult))
                    {
                        Console.WriteLine("Token not valid.");
                    }
                    else
                    {
                        Console.WriteLine($"\n\n======================LOGIN SUCCEEDED======================\n\n");
                        Console.WriteLine($"Username : {username}");
                        Console.WriteLine($"\nMESSAGE : {ApiResponseHelper.GetMessage(tokenResult)}");

                        Console.WriteLine("\n\nPress ENTER to continue...");
                    }
                }
                else
                {
                    Console.WriteLine("\n\nWrong username or password.");
                    Console.WriteLine("\nPress ENTER to try again...");
                }
                Console.ReadLine();
            }
        }
Ejemplo n.º 21
0
        public void ObjectResponse_Should_Return_PagedResponse_Correctly()
        {
            var content = new PagedResponse <string>
            {
                Data          = new [] { "data" },
                PrevPageIndex = 111,
                NextPageIndex = 222
            };
            var actual = ApiResponseHelper.ObjectResponse(StatusCodes.Status100Continue, true, message: "message", content: content);

            actual.Should().BeOfType <ActionResult <ApiResponse> >();

            actual.Result.Should().BeOfType <ObjectResult>();
            actual.Result.As <ObjectResult>().StatusCode.Should().Be(StatusCodes.Status100Continue);

            actual.Result.As <ObjectResult>().Value.Should().BeOfType <ApiResponse>();
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Success.Should().Be(true);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Message.Should().Be("message");
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Data.Should().Be(content.Data);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Navigation.PrevPageIndex.Should().Be(content.PrevPageIndex);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Navigation.NextPageIndex.Should().Be(content.NextPageIndex);
        }
Ejemplo n.º 22
0
        public void Ok_Should_Return_Correctly_With_PagedResponse_Data()
        {
            var content = new PagedResponse <string>
            {
                Data          = new [] { "data" },
                PrevPageIndex = 111,
                NextPageIndex = 222
            };
            var message = "message";
            var actual  = ApiResponseHelper.Ok(message, content);

            actual.Should().BeOfType <ActionResult <ApiResponse> >();

            actual.Result.Should().BeOfType <ObjectResult>();
            actual.Result.As <ObjectResult>().StatusCode.Should().Be(StatusCodes.Status200OK);

            actual.Result.As <ObjectResult>().Value.Should().BeOfType <ApiResponse>();
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Success.Should().Be(true);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Message.Should().Be(message);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Data.Should().Be(content.Data);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Navigation.PrevPageIndex.Should().Be(content.PrevPageIndex);
            actual.Result.As <ObjectResult>().Value.As <ApiResponse>().Navigation.NextPageIndex.Should().Be(content.NextPageIndex);
        }
Ejemplo n.º 23
0
        public async Task <ActionResult <ApiResponse> > Register([FromBody] SecurityRequest request, [FromServices] ISecurityService securityService)
        {
            var response = await securityService.Register(request);

            return(ApiResponseHelper.Created("User created.", response));
        }
Ejemplo n.º 24
0
        public async Task <JsonResult <DtoChargeResponseMessage> > ExecuteAsync(DtoChargeRequestMessage dtoChargeRequestMessage)
        {
            try
            {
                DtoCustomerModel dtoCustomerModel;

                if (string.IsNullOrEmpty(dtoChargeRequestMessage.customer_id))
                {
                    //var customVariables = new List<CustomVariables>
                    //{
                    //    new CustomVariables {name = "Tipo", value = "Pizzaria"},
                    //    new CustomVariables {name = "Gerente", value = "Fernando Chilvarguer"}
                    //};

                    var customer = new DtoCustomerRequestMessage
                    {
                        email    = dtoChargeRequestMessage.payer.email,
                        name     = dtoChargeRequestMessage.payer.name,
                        cpf_cnpj = dtoChargeRequestMessage.payer.cpf_cnpj,
                        //notes = dtoChargeRequestMessage.notes,
                        //custom_variables = customVariables,
                    };

                    using (var apiCustomer = new Customer())
                    {
                        /*"ccf9fdba30425bd85516114e976b53b0"*/
                        dtoCustomerModel = await apiCustomer.CreateAsync(customer, dtoChargeRequestMessage.token).ConfigureAwait(false);
                    };

                    dtoChargeRequestMessage.customer_id = dtoCustomerModel.id;
                }
                //else
                //{
                //    using (var apiClient = new Customer())
                //    {
                //        dtoCustomerModel = await apiClient.GetAsync(Guid.NewGuid().ToString()).ConfigureAwait(false);
                //    };
                //}

                dtoChargeRequestMessage = NovoRequestCriarBoletos(dtoChargeRequestMessage);

                DtoChargeResponseMessage chargeTokenResponse;

                using (var apiCharge = new Charge())
                {
                    chargeTokenResponse = await apiCharge.CreateAsync(dtoChargeRequestMessage).ConfigureAwait(false);
                }

                return(Json(chargeTokenResponse));
            }
            catch (GnException e)
            {
                SaeIuguApiStatus.SetNovoException(e);
                var dtoResponseBoletos = new DtoChargeResponseMessage()
                {
                    success = false,
                    message = ApiResponseHelper.GetApiResponseMessage(e.Code, e.Message, false),
                    errors  = new Dictionary <string, object>()
                    {
                        { "exception", new DtoExceptionMessage()
                          {
                              property = e.Code.ToString(),
                              message  = e.ErrorType
                          } }
                    }
                };

                return(Json(dtoResponseBoletos));
            }
            catch (Exception e)
            {
                SaeIuguApiStatus.SetNovoException(e);
                var dtoChargeResponseMessage = new DtoChargeResponseMessage()
                {
                    success = false,
                    message = e.Message,
                    errors  = new Dictionary <string, object>()
                    {
                        { "exception", new DtoExceptionMessage()
                          {
                              property = "exception",
                              message  = e.Message
                          } }
                    }
                };

                return(Json(dtoChargeResponseMessage));
            }
        }
Ejemplo n.º 25
0
        /// <summary>
        /// This method gets called by the runtime. Use this method to add services to the container.
        /// </summary>
        /// <param name="services"> The Service collection</param>
        public void ConfigureServices(IServiceCollection services)
        {
            // Enable logging from authentication flow
            IdentityModelEventSource.ShowPII = true;

            // Any exception occurred in Startup constructor then return to Configure method
            // there application will return with custom exception response.
            if (StartupException != null)
            {
                return;
            }

            try
            {
                services.AddMvcCore(filter =>
                {
                    filter.Filters.Add(typeof(ExceptionAttribute));
                });

                services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();

                // To configure application settings to service
                services.Configure <AppSettings>(configuration.GetSection(DataConstant.Appsettings));
                configuration.Bind(DataConstant.Appsettings, appSettings);
                configuration.Bind(DataConstant.ApplicationInsights, appSettings.ApplicationInsights);

                services.AddAuthentication(sharedOptions =>
                {
                    sharedOptions.DefaultScheme          = CookieAuthenticationDefaults.AuthenticationScheme;
                    sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
                })
                .AddAzureAdB2C(options => configuration.Bind(DataConstant.AppSettingsAzureAdB2C, options))
                .AddCookie();

                services.AddSingleton(appSettings);
                services.AddSingleton(configuration);
                services.AddSingleton(appSettings.AzureAdB2C);
                services.AddSingleton(appSettings.ApplicationInsights);

                // Add framework services
                // Contract resolver is initialized since default resolver is set as CamelCasePropertyNamesContractResolver by .Net core if not initialized
                services.AddControllers().AddNewtonsoftJson(options =>
                {
                    // Use the default property (Pascal) casing
                    options.SerializerSettings.ContractResolver = new DefaultContractResolver();
                });

                // Adds a default in-memory implementation of IDistributedCache.
                services.AddDistributedMemoryCache();
                services.AddSession();

                // Add application settings helper to service in order to access values.
                ConfigHelper configHelper = new ConfigHelper(appSettings);
                services.AddSingleton(typeof(ConfigHelper));

                // Add Api Response Helper to service to use configuration.
                ApiResponseHelper Helper = new ApiResponseHelper(configuration);
                services.AddSingleton(typeof(ApiResponseHelper));
                services.AddHttpContextAccessor();
            }
            catch (Exception exception)
            {
                StartupException = exception;
            }
        }
Ejemplo n.º 26
0
        public async Task <ActionResult <ApiResponse> > GetRemarks([FromQuery] string filter, [FromServices] IRemarksService remarksService)
        {
            var response = await remarksService.GetRemarks(filter);

            return(ApiResponseHelper.Ok($"{response.Count()} remark(s) found.", response));
        }
Ejemplo n.º 27
0
        public async Task <ActionResult <ApiResponse> > UpdateRemark(string remarkId, [FromBody] UpdateRemarkRequest updates, [FromServices] IRemarksService remarksService)
        {
            await remarksService.UpdateRemark(remarkId, updates);

            return(ApiResponseHelper.Ok("Remark updated.", remarkId));
        }
Ejemplo n.º 28
0
        public async Task <ActionResult <ApiResponse> > DeleteRemark(string remarkId, [FromServices] IRemarksService remarksService)
        {
            await remarksService.DeleteRemark(remarkId);

            return(ApiResponseHelper.Ok("Remark deleted.", remarkId));
        }
Ejemplo n.º 29
0
        public async Task <ActionResult <ApiResponse> > LogIn([FromBody] SecurityRequest request, [FromServices] ISecurityService securityService)
        {
            var response = await securityService.LogIn(request);

            return(ApiResponseHelper.Ok("User logged in.", response));
        }