-
Notifications
You must be signed in to change notification settings - Fork 2
Add Linx Search functionality to retrieve product #262
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account 8000
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello @Robi9, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
Summary of Changes
This pull request adds Linx Search functionality to retrieve products. It includes changes to go.mod
and go.sum
to update the goflow
dependency, and introduces a new LinxSearch
function in services/external/weni/service.go
to handle product searches using the Linx API. The changes also include updates to the test file services/external/weni/service_test.go
to add a mock response for the Linx API and a new test case for the Linx search functionality.
Highlights
- Linx Search Integration: The primary focus is the integration of Linx Search to retrieve product information, providing an alternative to Vtex.
- Dependency Update: The
goflow
dependency has been updated fromv1.11.0
tov1.12.0-staging
ingo.mod
andgo.sum
. - New Function: LinxSearch: A new function
LinxSearch
is added to handle the Linx API calls, parsing the URL, constructing the request, and processing the response to extract product SKUs. - Test Coverage: The test file
services/external/weni/service_test.go
is updated to include a mock response for the Linx API and a new test case to validate the Linx search functionality.
Changelog
- go.mod
- Updated
goflow
dependency fromv1.11.0
tov1.12.0-staging
.
- Updated
- go.sum
- Updated checksum for
goflow
dependency to match the new versionv1.12.0-staging
.
- Updated checksum for
- services/external/weni/service.go
- Added a conditional check for
apiType == "linx"
inGetProductListFromVtex
to call theLinxSearch
function. - Implemented the
LinxSearch
function to handle Linx API requests, response parsing, and SKU extraction based on availability and stock.
- Added a conditional check for
- services/external/weni/service_test.go
- Added a mock response for the Linx API endpoint.
- Added a new test case to verify the
LinxSearch
functionality, ensuring correct SKU retrieval.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/
folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
A new search is coded,
Linx joins the product flow,
SKUs now appear.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
The pull request adds Linx Search functionality to retrieve products. The code is generally well-structured and readable. However, there are some areas that could be improved, such as error handling and the TODO comment in the LinxSearch
function.
Summary of Findings
- Error Handling: The
LinxSearch
function does not handle errors when the status code is not 200. It only checks for status codes greater than or equal to 400. It should also handle status codes between 300 and 399, which indicate redirects. - TODO comment: The
LinxSearch
function has a TODO comment that should be addressed. The comment is about validating if the product IDs will be necessary via IDs. - Duplicated code: The test case for the Linx search is very similar to the other test cases. Consider refactoring the test cases to avoid code duplication.
Merge Readiness
The pull request is not ready to be merged. The error handling in the LinxSearch
function should be improved, and the TODO comment should be addressed. I am unable to directly approve this pull request, and other reviewers should review and approve this code before merging.
if trace.Response.StatusCode >= 400 { | ||
return nil, traces, fmt.Errorf("error when searching in Linx: status code %d", trace.Response.StatusCode) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider handling redirect status codes (3xx) as well. Currently, only status codes >= 400 are considered errors. Redirects should be followed or handled appropriately.
if trace.Response.StatusCode >= 400 {
return nil, traces, fmt.Errorf("error when searching in Linx: status code %d", trace.Response.StatusCode)
}
if trace.Response.StatusCode >= 300 && trace.Response.StatusCode < 400 {
// Handle redirect
fmt.Println("Redirect status code: %d", trace.Response.StatusCode)
// You might want to implement a redirect following logic here
return nil, traces, fmt.Errorf("redirection error when searching in Linx: status code %d", trace.Response.StatusCode)
}
services/external/weni/service.go
Outdated
} | ||
|
||
// Add product IDs as pids parameter if provided | ||
// TODO: validate if it will be necessary via ids |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No description provided.