soat-fiap / FIAP.TechChallenge.ByteMeBurger

The FIAP.TechChallenge.ByteMeBurger project is a comprehensive solution for managing a burger ordering system. It includes multiple modules for domain logic, application services, API endpoints, and infrastructure. The project is designed to be scalable, maintainable, and secure, leveraging modern .NET practices and AWS services.
BSD 3-Clause "New" or "Revised" License
0 stars 1 forks source link

chore: create MercadoPago gateway project #96

Closed italopessoa closed 3 months ago

italopessoa commented 3 months ago
coderabbitai[bot] commented 3 months ago

Walkthrough

The changes introduce MercadoPago integration into the ByteMeBurger project. This includes new projects for the MercadoPago gateway and its tests, updates to configuration files to handle new environment variables, and modifications to the API to manage webhook events from MercadoPago. Additionally, dependency injection and authorization filters have been updated to support the new functionality, ensuring secure and efficient processing of MercadoPago webhook events.

Changes

File(s) Change Summary
.env.template, docker-compose.yml, kubernetes/configmap-api.yaml, appsettings.Development.json Added new environment variable MercadoPago_WebhookSecret to various configuration files.
FIAP.TechChallenge.ByteMeBurger.sln Added new projects for MercadoPago gateway and its tests.
src/FIAP.TechChallenge.ByteMeBurger.Api/FIAP.TechChallenge.ByteMeBurger.Api.csproj Updated project references and added a new folder reference for the API project.
src/FIAP.TechChallenge.ByteMeBurger.Api/Program.cs, src/FIAP.TechChallenge.ByteMeBurger.Api/ServiceCollectionExtensions.cs Modified dependency injection setup to include MercadoPago configurations.
src/FIAP.TechChallenge.ByteMeBurger.Api/Webhook/MercadoPagoController.cs Added a new controller for handling MercadoPago webhook events.
src/FIAP.TechChallenge.ByteMeBurger.MercadoPago.Gateway/Auth/MercadoPagoMessageAuthorizationFilter.cs Introduced an authorization filter for validating MercadoPago webhook messages.
src/FIAP.TechChallenge.ByteMeBurger.MercadoPago.Gateway/Configuration/MercadoPagoOptions.cs Defined configuration options for MercadoPago integration.
src/FIAP.TechChallenge.ByteMeBurger.MercadoPago.Gateway/FIAP.TechChallenge.ByteMeBurger.MercadoPago.Gateway.csproj Updated project to target .NET 8.0 and added necessary package references.
src/FIAP.TechChallenge.ByteMeBurger.MercadoPago.Gateway/Model/MercadoPagoWebhookEvent.cs Defined models for handling MercadoPago webhook events.
src/FIAP.TechChallenge.ByteMeBurger.MercadoPago.Gateway/ServiceCollectionsExtensions.cs Added extension methods for configuring MercadoPago gateway services.
tests/FIAP.TechChallenge.ByteMeBurger.MercadoPago.Gateway.Test/Auth/MercadoPagoMessageAuthorizationFilterTest.cs Introduced test cases for the MercadoPago message authorization filter.
tests/FIAP.TechChallenge.ByteMeBurger.MercadoPago.Gateway.Test/FIAP.TechChallenge.ByteMeBurger.MercadoPago.Gateway.Test.csproj Updated test project to target .NET 8.0 and added necessary package references for testing.

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (invoked as PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
italopessoa commented 3 months ago

@coderabbitai create a mermaid graph with the execution flow of the changes on this pull request

coderabbitai[bot] commented 3 months ago

[!TIP] For best results, initiate chat on the files or code changes.

@italopessoa Here's the Mermaid graph depicting the execution flow of the changes introduced in this pull request. This graph focuses on the integration of the MercadoPago functionalities and the interactions between the new and modified components:

graph TD;
    A[Start] -->|Read config| B[Load Environment Variables]
    B --> C{MercadoPago Gateway Configured?}
    C -->|Yes| D[Initialize MercadoPago Gateway]
    C -->|No| E[Log Configuration Error]
    D --> F[MercadoPago Message Authorization Filter]
    F -->|Validate Signature| G[Try Validate Signature]
    G -->|Success| H[Post Webhook Event to Controller]
    G -->|Fail| I[Return Unauthorized]
    H --> J[Handle Webhook Event]
    J --> K[End]
    I --> K
    E --> K

This graph illustrates the flow from configuration loading to handling webhook events, including error handling for configuration issues and signature validation failures. Let me know if you need any adjustments or further details!

italopessoa commented 3 months ago

@coderabbitai create a mermaid sequenceDiagram for the changes on this pull request

coderabbitai[bot] commented 3 months ago

[!TIP] For best results, initiate chat on the files or code changes.

@italopessoa Below is the Mermaid sequence diagram illustrating the interactions and sequence of operations for the changes introduced in this pull request, focusing on the MercadoPago integration:

sequenceDiagram
    participant Config as Environment Config Loader
    participant Gateway as MercadoPago Gateway
    participant AuthFilter as MercadoPago Message Authorization Filter
    participant Controller as MercadoPago Controller
    participant Logger as Logger

    Config->>Gateway: Load Environment Variables
    Gateway->>Gateway: Configure Gateway
    Gateway->>AuthFilter: Initialize
    AuthFilter->>AuthFilter: Validate Signature
    alt Signature Valid
        AuthFilter->>Controller: Forward Request
        Controller->>Controller: Handle Webhook Event
        Controller->>Gateway: Response Processed
    else Signature Invalid
        AuthFilter->>Logger: Log Error
        AuthFilter->>Gateway: Return Unauthorized
    end

This diagram shows the sequence from configuration loading to handling webhook events, including the decision-making process based on the validity of the signature. If you need any adjustments or additional details, please let me know!