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
Wallbox Add Authentication Decorator #102520
Wallbox Add Authentication Decorator #102520
Conversation
@edenhaus PR for the decorator suggestion. My current approach renames the authenticate method (removing _) in the wallbox class and places the decorator function outside the class. This way I don't have W0212 (using protected class member) or N805 (no self as first argument) linter errors. Not sure if this is the best approach, maybe you know of a better way (authenticate method feels a bit unnecessary). |
Please take a look at the requested changes, and use the Ready for review button when you are done, thanks 👍 |
… into wallbox_auth_decorator
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.
Thanks @hesselonline 👍
return func(self, *args, **kwargs) | ||
except requests.exceptions.HTTPError as wallbox_connection_error: | ||
if wallbox_connection_error.response.status_code == HTTPStatus.FORBIDDEN: | ||
raise ConfigEntryAuthFailed from wallbox_connection_error |
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.
Shouldn't we start a reauth flow whenever we fail authentication? If this is raised as part of a service call currently no reauth flow is started. It's only _async_update_data
that will automatically handle ConfigEntryAuthFailed
and start a reauth flow.
Proposed change
Creating a decorator for the authentication of the wallbox methods, as discussed in PR: #101840
Type of change
Additional information
Checklist
black --fast homeassistant tests
)If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest
.requirements_all.txt
.Updated by running
python3 -m script.gen_requirements_all
..coveragerc
.To help with the load of incoming pull requests: