summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-imow-webapi.spec466
-rw-r--r--sources1
3 files changed, 468 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..13b8c2d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/imow-webapi-0.7.10.tar.gz
diff --git a/python-imow-webapi.spec b/python-imow-webapi.spec
new file mode 100644
index 0000000..cae60e9
--- /dev/null
+++ b/python-imow-webapi.spec
@@ -0,0 +1,466 @@
+%global _empty_manifest_terminate_build 0
+Name: python-imow-webapi
+Version: 0.7.10
+Release: 1
+Summary: A library to authenticate and interact with STIHL iMow mowers using their WebAPI
+License: GPL
+URL: https://github.com/ChrisHaPunkt/stihl-imow-webapi
+Source0: https://mirrors.aliyun.com/pypi/web/packages/b9/c4/fac120beabe780596fe9d9156ad8ab3a585fccb8de1409c8b04f7af552d2/imow-webapi-0.7.10.tar.gz
+BuildArch: noarch
+
+Requires: python3-aiohttp
+Requires: python3-beautifulsoup4
+Requires: python3-furl
+Requires: python3-setuptools
+
+%description
+| chris@homeset.de | [ChrisHaPunkt](https://github.com/ChrisHaPunkt) |
+## License
+This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md)
+license file for more details.
+# Acknowledges
+Thanks to
+* https://github.com/nstrydom2/anonfile-api
+* https://github.com/OpenXbox/xbox-webapi-python
+for repo structure inspiration
+# Changelog
+## Version 0.7.10 (2023-05-13)
+- Bugfix http_session not present on logout
+## Version 0.7.9 (2023-05-13)
+- remove unnecessary http_session closes
+## Version 0.7.8 (2022-03-06)
+- Implement a logout function `ImowAPI.api_logout()`. Use within re-authentication
+## Version 0.7.7 (2022-03-06)
+- Use more `async with`s
+## Version 0.7.6 (2022-03-05)
+### Dependency updates
+- Update dependencies to latest
+## Version 0.7.4 (2021-09-06)
+### Bugfxes
+- Allow handling of timestamps on mower intents (StartTime/Endtime)
+## Version 0.7.3 (2021-07-03)
+### Bugfxes
+- Always return a MowerState on settings update
+## Version 0.7.2 (2021-07-03)
+```python
+await mower.update_setting("gpsProtectionEnabled", True)
+```
+### Features
+- Possibility to update a specific settings for a mower like gpsProtection on/off
+## Version 0.7.0 (2021-06-30)
+### Breaking Changes
+- `IMowApi.intent` Parameter `mower_action_id` is renamed to `mower_external_id` to match the upstream api expectation.
+### Features
+- If an `api_request` is intended, and the used `access_token` expires in less than one day, it's automatically renewed.
+## Version 0.6.0 (2021-06-28)
+- ```python
+ mower.machineError = 'M1120',
+ mower.machineState = 'HOOD_BLOCKED',
+ mower.stateMessage: dict = {
+ 'short': 'Hood blocked',
+ 'long': 'The hood is blocked. Please check the hood and press the OK button on your machine (M1120).',
+ 'legacyMessage': 'Abschaltung Automatikmode durch Bumper',
+ 'errorId': 'M1120',
+ 'error': True
+ }
+ ```
+### Breaking Changes
+- Migrated all own MowerState attributes to camelCase to match the upstream attributes style.
+ ```
+ - MowerState.stateMessage = None
+ - MowerState.machineError = None
+ - MowerState.machineState = None
+ ```
+## Version 0.5.2 (2021-06-15)
+## Bugfixes
+- Also quote password string in auth request to support more special chars
+## Version 0.5.1 (2021-06-13)
+## Features
+- ```python
+ mower.machine_error = 'M1120',
+ mower.machine_state = 'HOOD_BLOCKED',
+ mower.state_message: dict = {
+ 'short': 'Hood blocked',
+ 'long': 'The hood is blocked. Please check the hood and press the OK button on your machine (M1120).',
+ 'legacyMessage': 'Abschaltung Automatikmode durch Bumper',
+ 'errorId': 'M1120',
+ 'error': True
+ }
+ ```
+ Provide a machine usable string from the short message in english
+## Version 0.5.0 (2021-06-12)
+### Breaking Changes
+- The ``MowerTask`` class is removed in favor of the new ``state_message`` property on th ``MowerState`` object.
+- The ``MowerState.get_current_task()`` method now returns the `short` property of the state message instead of a ``MowerTask``
+ property and is now longer an ``async`` method.
+### Features
+- ```python
+ mower.state_message -> dict
+ {
+ 'short': 'Hood blocked',
+ 'long': 'The hood is blocked. Please check the hood and press the OK button on your machine (M1120).',
+ 'errorId': 'M1120',
+ 'error': True
+ }
+ ```
+ The MowerState Class now provides a ```state_message``` property which gives a ``short`` and``long`` text for
+ description (Besides an error indication and errorId). All error and status codes are now dynamically matched and
+ human readable available.
+ **This makes the ``MowerTask`` obsolete and it is removed with this release.**
+- ``api = IMowApi(lang="en")``
+ The imow api can now be instanced with a language code (fallback to ``en``).
+ The ``state_message`` property displays the messages in the corresponding language.
+## Version 0.4.5 (2021-06-01)
+### Features
+- Add 2 new identified Tasks within `MowerTask` (Thanks to @lausser)
+- Add `check_api_maintenance()` method to `IMowAPI` Class. Check if the api server is currently under maintenance.
+ This method is automatically called if the api server returns a 500 error response for any request.
+- One should call the new `close()` method for the `IMowAPI` Class when finishing the api interactions to correctly
+ close the http session.
+### Bugfixes
+- [Issue #8](https://github.com/ChrisHaPunkt/stihl-imow-webapi/issues/8) - Example not working
+## Version 0.4.4 (2021-05-28)
+### Features
+- Add `validate_token()` method to `IMowAPI` Class. Test if a token is valid and is able to call the webapi.
+## Version 0.4.3 (2021-05-27)
+### Features
+- Allow `IMowAPI` Class to use predefined `aiohttp` session when instantiating
+## Version 0.4.1 (2021-05-24)
+### Changes
+- Even more asynchronously with switch from `requests` to `aiohttp`
+## Version 0.4.0 (2021-05-17)
+### Breaking Changes
+- Reworked everything to use asyncio where possible. See Readme.md for new usage example.
+- Renamed MowerState method `update` to `update_from_upstream`
+- Renamed MowerState method `get_status` to `get_current_status`
+## Version 0.3.0 (2021-05-17)
+### Breaking Changes
+- Renamed Class/Enum `MowerState` to `MowerTask` because it describes the current task not the state
+- Renamed Class `Mower` to `MowerState` because it's just a snapshot of the last upstream state
+### Features
+- Add methods to work on `MowerState` objects, like action intents or statistic receive
+- Add PDoc documents, available
+ on [https://chrishapunkt.github.io/stihl-imow-webapi/imow](https://chrishapunkt.github.io/stihl-imow-webapi/imow)
+### Bugfixes
+- Return a valid error message and raise if provided login credentials are wrong
+## Version 0.2.2 (2021-05-00)
+- Initial release
+
+%package -n python3-imow-webapi
+Summary: A library to authenticate and interact with STIHL iMow mowers using their WebAPI
+Provides: python-imow-webapi
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-imow-webapi
+| chris@homeset.de | [ChrisHaPunkt](https://github.com/ChrisHaPunkt) |
+## License
+This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md)
+license file for more details.
+# Acknowledges
+Thanks to
+* https://github.com/nstrydom2/anonfile-api
+* https://github.com/OpenXbox/xbox-webapi-python
+for repo structure inspiration
+# Changelog
+## Version 0.7.10 (2023-05-13)
+- Bugfix http_session not present on logout
+## Version 0.7.9 (2023-05-13)
+- remove unnecessary http_session closes
+## Version 0.7.8 (2022-03-06)
+- Implement a logout function `ImowAPI.api_logout()`. Use within re-authentication
+## Version 0.7.7 (2022-03-06)
+- Use more `async with`s
+## Version 0.7.6 (2022-03-05)
+### Dependency updates
+- Update dependencies to latest
+## Version 0.7.4 (2021-09-06)
+### Bugfxes
+- Allow handling of timestamps on mower intents (StartTime/Endtime)
+## Version 0.7.3 (2021-07-03)
+### Bugfxes
+- Always return a MowerState on settings update
+## Version 0.7.2 (2021-07-03)
+```python
+await mower.update_setting("gpsProtectionEnabled", True)
+```
+### Features
+- Possibility to update a specific settings for a mower like gpsProtection on/off
+## Version 0.7.0 (2021-06-30)
+### Breaking Changes
+- `IMowApi.intent` Parameter `mower_action_id` is renamed to `mower_external_id` to match the upstream api expectation.
+### Features
+- If an `api_request` is intended, and the used `access_token` expires in less than one day, it's automatically renewed.
+## Version 0.6.0 (2021-06-28)
+- ```python
+ mower.machineError = 'M1120',
+ mower.machineState = 'HOOD_BLOCKED',
+ mower.stateMessage: dict = {
+ 'short': 'Hood blocked',
+ 'long': 'The hood is blocked. Please check the hood and press the OK button on your machine (M1120).',
+ 'legacyMessage': 'Abschaltung Automatikmode durch Bumper',
+ 'errorId': 'M1120',
+ 'error': True
+ }
+ ```
+### Breaking Changes
+- Migrated all own MowerState attributes to camelCase to match the upstream attributes style.
+ ```
+ - MowerState.stateMessage = None
+ - MowerState.machineError = None
+ - MowerState.machineState = None
+ ```
+## Version 0.5.2 (2021-06-15)
+## Bugfixes
+- Also quote password string in auth request to support more special chars
+## Version 0.5.1 (2021-06-13)
+## Features
+- ```python
+ mower.machine_error = 'M1120',
+ mower.machine_state = 'HOOD_BLOCKED',
+ mower.state_message: dict = {
+ 'short': 'Hood blocked',
+ 'long': 'The hood is blocked. Please check the hood and press the OK button on your machine (M1120).',
+ 'legacyMessage': 'Abschaltung Automatikmode durch Bumper',
+ 'errorId': 'M1120',
+ 'error': True
+ }
+ ```
+ Provide a machine usable string from the short message in english
+## Version 0.5.0 (2021-06-12)
+### Breaking Changes
+- The ``MowerTask`` class is removed in favor of the new ``state_message`` property on th ``MowerState`` object.
+- The ``MowerState.get_current_task()`` method now returns the `short` property of the state message instead of a ``MowerTask``
+ property and is now longer an ``async`` method.
+### Features
+- ```python
+ mower.state_message -> dict
+ {
+ 'short': 'Hood blocked',
+ 'long': 'The hood is blocked. Please check the hood and press the OK button on your machine (M1120).',
+ 'errorId': 'M1120',
+ 'error': True
+ }
+ ```
+ The MowerState Class now provides a ```state_message``` property which gives a ``short`` and``long`` text for
+ description (Besides an error indication and errorId). All error and status codes are now dynamically matched and
+ human readable available.
+ **This makes the ``MowerTask`` obsolete and it is removed with this release.**
+- ``api = IMowApi(lang="en")``
+ The imow api can now be instanced with a language code (fallback to ``en``).
+ The ``state_message`` property displays the messages in the corresponding language.
+## Version 0.4.5 (2021-06-01)
+### Features
+- Add 2 new identified Tasks within `MowerTask` (Thanks to @lausser)
+- Add `check_api_maintenance()` method to `IMowAPI` Class. Check if the api server is currently under maintenance.
+ This method is automatically called if the api server returns a 500 error response for any request.
+- One should call the new `close()` method for the `IMowAPI` Class when finishing the api interactions to correctly
+ close the http session.
+### Bugfixes
+- [Issue #8](https://github.com/ChrisHaPunkt/stihl-imow-webapi/issues/8) - Example not working
+## Version 0.4.4 (2021-05-28)
+### Features
+- Add `validate_token()` method to `IMowAPI` Class. Test if a token is valid and is able to call the webapi.
+## Version 0.4.3 (2021-05-27)
+### Features
+- Allow `IMowAPI` Class to use predefined `aiohttp` session when instantiating
+## Version 0.4.1 (2021-05-24)
+### Changes
+- Even more asynchronously with switch from `requests` to `aiohttp`
+## Version 0.4.0 (2021-05-17)
+### Breaking Changes
+- Reworked everything to use asyncio where possible. See Readme.md for new usage example.
+- Renamed MowerState method `update` to `update_from_upstream`
+- Renamed MowerState method `get_status` to `get_current_status`
+## Version 0.3.0 (2021-05-17)
+### Breaking Changes
+- Renamed Class/Enum `MowerState` to `MowerTask` because it describes the current task not the state
+- Renamed Class `Mower` to `MowerState` because it's just a snapshot of the last upstream state
+### Features
+- Add methods to work on `MowerState` objects, like action intents or statistic receive
+- Add PDoc documents, available
+ on [https://chrishapunkt.github.io/stihl-imow-webapi/imow](https://chrishapunkt.github.io/stihl-imow-webapi/imow)
+### Bugfixes
+- Return a valid error message and raise if provided login credentials are wrong
+## Version 0.2.2 (2021-05-00)
+- Initial release
+
+%package help
+Summary: Development documents and examples for imow-webapi
+Provides: python3-imow-webapi-doc
+%description help
+| chris@homeset.de | [ChrisHaPunkt](https://github.com/ChrisHaPunkt) |
+## License
+This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md)
+license file for more details.
+# Acknowledges
+Thanks to
+* https://github.com/nstrydom2/anonfile-api
+* https://github.com/OpenXbox/xbox-webapi-python
+for repo structure inspiration
+# Changelog
+## Version 0.7.10 (2023-05-13)
+- Bugfix http_session not present on logout
+## Version 0.7.9 (2023-05-13)
+- remove unnecessary http_session closes
+## Version 0.7.8 (2022-03-06)
+- Implement a logout function `ImowAPI.api_logout()`. Use within re-authentication
+## Version 0.7.7 (2022-03-06)
+- Use more `async with`s
+## Version 0.7.6 (2022-03-05)
+### Dependency updates
+- Update dependencies to latest
+## Version 0.7.4 (2021-09-06)
+### Bugfxes
+- Allow handling of timestamps on mower intents (StartTime/Endtime)
+## Version 0.7.3 (2021-07-03)
+### Bugfxes
+- Always return a MowerState on settings update
+## Version 0.7.2 (2021-07-03)
+```python
+await mower.update_setting("gpsProtectionEnabled", True)
+```
+### Features
+- Possibility to update a specific settings for a mower like gpsProtection on/off
+## Version 0.7.0 (2021-06-30)
+### Breaking Changes
+- `IMowApi.intent` Parameter `mower_action_id` is renamed to `mower_external_id` to match the upstream api expectation.
+### Features
+- If an `api_request` is intended, and the used `access_token` expires in less than one day, it's automatically renewed.
+## Version 0.6.0 (2021-06-28)
+- ```python
+ mower.machineError = 'M1120',
+ mower.machineState = 'HOOD_BLOCKED',
+ mower.stateMessage: dict = {
+ 'short': 'Hood blocked',
+ 'long': 'The hood is blocked. Please check the hood and press the OK button on your machine (M1120).',
+ 'legacyMessage': 'Abschaltung Automatikmode durch Bumper',
+ 'errorId': 'M1120',
+ 'error': True
+ }
+ ```
+### Breaking Changes
+- Migrated all own MowerState attributes to camelCase to match the upstream attributes style.
+ ```
+ - MowerState.stateMessage = None
+ - MowerState.machineError = None
+ - MowerState.machineState = None
+ ```
+## Version 0.5.2 (2021-06-15)
+## Bugfixes
+- Also quote password string in auth request to support more special chars
+## Version 0.5.1 (2021-06-13)
+## Features
+- ```python
+ mower.machine_error = 'M1120',
+ mower.machine_state = 'HOOD_BLOCKED',
+ mower.state_message: dict = {
+ 'short': 'Hood blocked',
+ 'long': 'The hood is blocked. Please check the hood and press the OK button on your machine (M1120).',
+ 'legacyMessage': 'Abschaltung Automatikmode durch Bumper',
+ 'errorId': 'M1120',
+ 'error': True
+ }
+ ```
+ Provide a machine usable string from the short message in english
+## Version 0.5.0 (2021-06-12)
+### Breaking Changes
+- The ``MowerTask`` class is removed in favor of the new ``state_message`` property on th ``MowerState`` object.
+- The ``MowerState.get_current_task()`` method now returns the `short` property of the state message instead of a ``MowerTask``
+ property and is now longer an ``async`` method.
+### Features
+- ```python
+ mower.state_message -> dict
+ {
+ 'short': 'Hood blocked',
+ 'long': 'The hood is blocked. Please check the hood and press the OK button on your machine (M1120).',
+ 'errorId': 'M1120',
+ 'error': True
+ }
+ ```
+ The MowerState Class now provides a ```state_message``` property which gives a ``short`` and``long`` text for
+ description (Besides an error indication and errorId). All error and status codes are now dynamically matched and
+ human readable available.
+ **This makes the ``MowerTask`` obsolete and it is removed with this release.**
+- ``api = IMowApi(lang="en")``
+ The imow api can now be instanced with a language code (fallback to ``en``).
+ The ``state_message`` property displays the messages in the corresponding language.
+## Version 0.4.5 (2021-06-01)
+### Features
+- Add 2 new identified Tasks within `MowerTask` (Thanks to @lausser)
+- Add `check_api_maintenance()` method to `IMowAPI` Class. Check if the api server is currently under maintenance.
+ This method is automatically called if the api server returns a 500 error response for any request.
+- One should call the new `close()` method for the `IMowAPI` Class when finishing the api interactions to correctly
+ close the http session.
+### Bugfixes
+- [Issue #8](https://github.com/ChrisHaPunkt/stihl-imow-webapi/issues/8) - Example not working
+## Version 0.4.4 (2021-05-28)
+### Features
+- Add `validate_token()` method to `IMowAPI` Class. Test if a token is valid and is able to call the webapi.
+## Version 0.4.3 (2021-05-27)
+### Features
+- Allow `IMowAPI` Class to use predefined `aiohttp` session when instantiating
+## Version 0.4.1 (2021-05-24)
+### Changes
+- Even more asynchronously with switch from `requests` to `aiohttp`
+## Version 0.4.0 (2021-05-17)
+### Breaking Changes
+- Reworked everything to use asyncio where possible. See Readme.md for new usage example.
+- Renamed MowerState method `update` to `update_from_upstream`
+- Renamed MowerState method `get_status` to `get_current_status`
+## Version 0.3.0 (2021-05-17)
+### Breaking Changes
+- Renamed Class/Enum `MowerState` to `MowerTask` because it describes the current task not the state
+- Renamed Class `Mower` to `MowerState` because it's just a snapshot of the last upstream state
+### Features
+- Add methods to work on `MowerState` objects, like action intents or statistic receive
+- Add PDoc documents, available
+ on [https://chrishapunkt.github.io/stihl-imow-webapi/imow](https://chrishapunkt.github.io/stihl-imow-webapi/imow)
+### Bugfixes
+- Return a valid error message and raise if provided login credentials are wrong
+## Version 0.2.2 (2021-05-00)
+- Initial release
+
+%prep
+%autosetup -n imow-webapi-0.7.10
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-imow-webapi -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.7.10-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..0e75e3c
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+9290ab4745fc10ded5e03e197e9b6bba imow-webapi-0.7.10.tar.gz