Project description
Complete solution for extracting currency pair quotes data.
With comprehensive testing, parameter validation, flexible configuration management, Hexagonal Architecture, CI/CD pipelines, code quality tools, and detailed documentation.
Project Stack
Project Highlights:
-
Comprehensive Testing: Development of tests to ensure the quality and robustness of the code
-
Parameter Validation: Sending valid parameters based on the request data source itself, ensuring the integrity and accuracy of the information processed.
-
Configuration Management: Use of a configuration module to manage endpoints, retry times and number of attempts, providing flexibility and ease of adjustment.
-
Hexagonal Architecture: Adoption of Hexagonal Architecture to decouple the core logic from external dependencies, ensuring that any current data source can be replaced seamlessly in case of unavailability. This is facilitated by the use of adapters, which act as intermediaries between the core application and the external services.
-
Cotinuous Integration and Continuous Deployment: Use of CI/CD pipelines to automate the build, test and deployment processes, ensuring that the application is always up to date and ready for use.
-
Code Quality: Use of code quality tools such as linters and formatters to ensure that the codebase is clean, consistent and easy to read.
-
Documentation: Creation of detailed documentation to facilitate the understanding and use of the application, including installation instructions, usage examples and troubleshooting guides.
Contributing
See the following docs:
How to get currency quotes using this library
from currency_quote import ClientBuilder
client = ClientBuilder(currency_list="USD-BRL")
client = ClientBuilder(currency_list=['USD-BRL', 'EUR-BRL'])
print(client.get_last_quote())
print(client.get_history_quote(reference_date=20220101))
- This is expected payload for get Last Quote with USD-BRL currency pair
[
{
"currency_pair":"USD-BRL",
"currency_pair_name":"Dólar Americano/Real Brasileiro",
"base_currency_code":"USD",
"quote_currency_code":"BRL",
"quote_timestamp":1727201744,
"bid_price":"5.4579",
"ask_price":"5.4589",
"quote_extracted_at":1727201753
}
]
- This is expected payload for get History Quote with USD-BRL currency pair
[
{
"currency_pair":"USD-BRL",
"currency_pair_name":"Dólar Americano/Real Brasileiro",
"base_currency_code":"USD",
"quote_currency_code":"BRL",
"quote_timestamp":1719440767,
"bid_price":5.524,
"ask_price":5.5245,
"quote_extracted_at":1727201753
}
]
- This is expected payload for get last Quote with two or more currencies
[
{
"currency_pair":"USD-BRL",
"currency_pair_name":"Dólar Americano/Real Brasileiro",
"base_currency_code":"USD",
"quote_currency_code":"BRL",
"quote_timestamp":1727201384,
"bid_price":"5.4594",
"ask_price":"5.4599",
"quote_extracted_at":1727201387
},
{
"currency_pair":"USD-EUR",
"currency_pair_name":"Dólar Americano/Euro",
"base_currency_code":"USD",
"quote_currency_code":"EUR",
"quote_timestamp":1727201376,
"bid_price":"0.8957",
"ask_price":"0.8958",
"quote_extracted_at":1727201387
}
]
- This is expected payload for history last Quote with two or more currencies
[
{
"currency_pair":"USD-BRL",
"currency_pair_name":"Dólar Americano/Real Brasileiro",
"base_currency_code":"USD",
"quote_currency_code":"BRL",
"quote_timestamp":1727201384,
"bid_price":"5.4594",
"ask_price":"5.4599",
"quote_extracted_at":1727201387
},
{
"currency_pair":"USD-EUR",
"currency_pair_name":"Dólar Americano/Euro",
"base_currency_code":"USD",
"quote_currency_code":"EUR",
"quote_timestamp":1727201376,
"bid_price":"0.8957",
"ask_price":"0.8958",
"quote_extracted_at":1727201387
}
]
Hexagonal Design of library