summaryrefslogtreecommitdiff
path: root/python-aioautomower.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-aioautomower.spec')
-rw-r--r--python-aioautomower.spec526
1 files changed, 526 insertions, 0 deletions
diff --git a/python-aioautomower.spec b/python-aioautomower.spec
new file mode 100644
index 0000000..92ee364
--- /dev/null
+++ b/python-aioautomower.spec
@@ -0,0 +1,526 @@
+%global _empty_manifest_terminate_build 0
+Name: python-aioautomower
+Version: 2023.4.5
+Release: 1
+Summary: module to communicate to Husqvarna Automower API
+License: Apache License 2.0
+URL: https://github.com/Thomas55555/aioautomower
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/a7/d2/88f4dfe1507a2d971440d157694ca76ceaefeb0c198d5f19508f5e7da4bf/aioautomower-2023.4.5.tar.gz
+BuildArch: noarch
+
+Requires: python3-aiohttp
+
+%description
+# Aioautomower
+
+Asynchronous library to communicate with the Automower Connect API
+
+## REST API Examples
+
+```python
+from aioautomower import GetAccessTokenClientCredentials, GetMowerData, Return
+from aiohttp import ClientError
+from aiohttp.client_exceptions import ClientConnectorError
+import asyncio
+
+api_key = "12345678-abcd-1234-a1a1-efghijklmnop" ## Your API-Key
+client_secret = "client_secret" ## Your client_secret
+
+
+class ExampleToken:
+ """Returns the access token as dict."""
+ def __init__(self, api_key, client_secret):
+ self.client_id = api_key
+ self.client_secret = client_secret
+
+ async def token(self):
+ try:
+ get_token = GetAccessTokenClientCredentials(
+ self.client_id,
+ self.client_secret,
+ )
+ access_token_raw = await get_token.async_get_access_token()
+ except (ClientConnectorError, ClientError):
+ raise KeyError
+ return access_token_raw
+
+class MowerData:
+ """Returns the data of all mowers as dict."""
+ def __init__(self, api_key, access_token, provider, token_type):
+ self.api_key = api_key
+ self.access_token = access_token
+ self.provider = provider
+ self.token_type = token_type
+
+ async def mowers(self):
+ try:
+ get_mower_data = GetMowerData(
+ self.api_key,
+ self.access_token,
+ self.provider,
+ self.token_type,
+ )
+ mower_data = await get_mower_data.async_mower_state()
+ except (ClientConnectorError, ClientError):
+ return "Make sure, you are connected to the Authentication API and the Automower API"
+ return mower_data
+
+class SendingCommand:
+ """Returns the data of all mowers as dict."""
+ def __init__(self, api_key, access_token, provider, token_type, mower_id, payload, command_type):
+ self.api_key = api_key
+ self.access_token = access_token
+ self.provider = provider
+ self.token_type = token_type
+ self.mower_id = mower_id
+ self.payload = payload
+ self.command_type = command_type
+
+ async def mowers(self):
+ try:
+ send = Return(
+ self.api_key,
+ self.access_token,
+ self.provider,
+ self.token_type,
+ self.mower_id,
+ self.payload
+ self.command_type
+ )
+ send = await send.async_mower_command()
+ except Exception:
+ return "Something went wrong"
+ return send
+
+
+example = ExampleToken(api_key, client_id)
+token_output = asyncio.run(example.token())
+print(token_output)
+
+access_token = token_output["access_token"]
+provider = token_output["provider"]
+token_type = token_output["token_type"]
+
+example2 = MowerData(api_key, access_token, provider, token_type)
+mower_output = asyncio.run(example2.mowers())
+print(mower_output)
+
+mower_id = mower_output["data"][0]["id"] ## '0' is your first mower
+print ("Mower ID:", mower_id)
+command_type = "actions"
+payload = '{"data": {"type": "ResumeSchedule"}}' ## For more commands see: https://developer.husqvarnagroup.cloud/apis/Automower+Connect+API#/swagger
+example3 = SendingCommand(api_key, access_token, provider, token_type, mower_id, payload, command_type)
+result = asyncio.run(example3.mowers())
+print (result) ## if, 202, then okay
+```
+
+## AutomowerSession examples
+
+An AutomowerSession keeps track of the access token, refreshing it whenever
+needed and monitors a websocket for updates, whose data is sent to callbacks
+provided by the user.
+
+```python
+import asyncio
+import logging
+
+import aioautomower
+
+CLIENT_SECRET = "mystringpassword"
+API_KEY = "12312312-0126-6222-2662-3e6c49f0012c"
+
+
+async def main():
+ sess = aioautomower.AutomowerSession(API_KEY, token=None)
+
+ # Add a callback, can be done at any point in time and
+ # multiple callbacks can be added.
+ sess.register_cb(lambda data:print(data))
+
+ # If no token was passed to the constructor, we need to call login()
+ # before connect(). The token can be stored somewhere and passed to
+ # the constructor later on.
+ token = await sess.logincc(CLIENT_SECRET)
+
+ if not await sess.connect():
+ # If the token is still None or too old, the connect will fail.
+ print("Connect failed")
+ return
+ await asyncio.sleep(5)
+ status = await sess.get_status()
+ print(status)
+ await asyncio.sleep(30)
+
+ # The close() will stop the websocket and the token refresh tasks
+ await sess.close()
+
+asyncio.run(main())
+```
+
+## AutomowerCLI example
+
+An AutomowerSession that provides you with the data in a CLI
+
+`automower --client_secret 12312312-12ec-486b-a7a7-9d9b06644a14 --api-key 12312312-0126-6222-2662-3e6c49f0012c`
+
+
+%package -n python3-aioautomower
+Summary: module to communicate to Husqvarna Automower API
+Provides: python-aioautomower
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-aioautomower
+# Aioautomower
+
+Asynchronous library to communicate with the Automower Connect API
+
+## REST API Examples
+
+```python
+from aioautomower import GetAccessTokenClientCredentials, GetMowerData, Return
+from aiohttp import ClientError
+from aiohttp.client_exceptions import ClientConnectorError
+import asyncio
+
+api_key = "12345678-abcd-1234-a1a1-efghijklmnop" ## Your API-Key
+client_secret = "client_secret" ## Your client_secret
+
+
+class ExampleToken:
+ """Returns the access token as dict."""
+ def __init__(self, api_key, client_secret):
+ self.client_id = api_key
+ self.client_secret = client_secret
+
+ async def token(self):
+ try:
+ get_token = GetAccessTokenClientCredentials(
+ self.client_id,
+ self.client_secret,
+ )
+ access_token_raw = await get_token.async_get_access_token()
+ except (ClientConnectorError, ClientError):
+ raise KeyError
+ return access_token_raw
+
+class MowerData:
+ """Returns the data of all mowers as dict."""
+ def __init__(self, api_key, access_token, provider, token_type):
+ self.api_key = api_key
+ self.access_token = access_token
+ self.provider = provider
+ self.token_type = token_type
+
+ async def mowers(self):
+ try:
+ get_mower_data = GetMowerData(
+ self.api_key,
+ self.access_token,
+ self.provider,
+ self.token_type,
+ )
+ mower_data = await get_mower_data.async_mower_state()
+ except (ClientConnectorError, ClientError):
+ return "Make sure, you are connected to the Authentication API and the Automower API"
+ return mower_data
+
+class SendingCommand:
+ """Returns the data of all mowers as dict."""
+ def __init__(self, api_key, access_token, provider, token_type, mower_id, payload, command_type):
+ self.api_key = api_key
+ self.access_token = access_token
+ self.provider = provider
+ self.token_type = token_type
+ self.mower_id = mower_id
+ self.payload = payload
+ self.command_type = command_type
+
+ async def mowers(self):
+ try:
+ send = Return(
+ self.api_key,
+ self.access_token,
+ self.provider,
+ self.token_type,
+ self.mower_id,
+ self.payload
+ self.command_type
+ )
+ send = await send.async_mower_command()
+ except Exception:
+ return "Something went wrong"
+ return send
+
+
+example = ExampleToken(api_key, client_id)
+token_output = asyncio.run(example.token())
+print(token_output)
+
+access_token = token_output["access_token"]
+provider = token_output["provider"]
+token_type = token_output["token_type"]
+
+example2 = MowerData(api_key, access_token, provider, token_type)
+mower_output = asyncio.run(example2.mowers())
+print(mower_output)
+
+mower_id = mower_output["data"][0]["id"] ## '0' is your first mower
+print ("Mower ID:", mower_id)
+command_type = "actions"
+payload = '{"data": {"type": "ResumeSchedule"}}' ## For more commands see: https://developer.husqvarnagroup.cloud/apis/Automower+Connect+API#/swagger
+example3 = SendingCommand(api_key, access_token, provider, token_type, mower_id, payload, command_type)
+result = asyncio.run(example3.mowers())
+print (result) ## if, 202, then okay
+```
+
+## AutomowerSession examples
+
+An AutomowerSession keeps track of the access token, refreshing it whenever
+needed and monitors a websocket for updates, whose data is sent to callbacks
+provided by the user.
+
+```python
+import asyncio
+import logging
+
+import aioautomower
+
+CLIENT_SECRET = "mystringpassword"
+API_KEY = "12312312-0126-6222-2662-3e6c49f0012c"
+
+
+async def main():
+ sess = aioautomower.AutomowerSession(API_KEY, token=None)
+
+ # Add a callback, can be done at any point in time and
+ # multiple callbacks can be added.
+ sess.register_cb(lambda data:print(data))
+
+ # If no token was passed to the constructor, we need to call login()
+ # before connect(). The token can be stored somewhere and passed to
+ # the constructor later on.
+ token = await sess.logincc(CLIENT_SECRET)
+
+ if not await sess.connect():
+ # If the token is still None or too old, the connect will fail.
+ print("Connect failed")
+ return
+ await asyncio.sleep(5)
+ status = await sess.get_status()
+ print(status)
+ await asyncio.sleep(30)
+
+ # The close() will stop the websocket and the token refresh tasks
+ await sess.close()
+
+asyncio.run(main())
+```
+
+## AutomowerCLI example
+
+An AutomowerSession that provides you with the data in a CLI
+
+`automower --client_secret 12312312-12ec-486b-a7a7-9d9b06644a14 --api-key 12312312-0126-6222-2662-3e6c49f0012c`
+
+
+%package help
+Summary: Development documents and examples for aioautomower
+Provides: python3-aioautomower-doc
+%description help
+# Aioautomower
+
+Asynchronous library to communicate with the Automower Connect API
+
+## REST API Examples
+
+```python
+from aioautomower import GetAccessTokenClientCredentials, GetMowerData, Return
+from aiohttp import ClientError
+from aiohttp.client_exceptions import ClientConnectorError
+import asyncio
+
+api_key = "12345678-abcd-1234-a1a1-efghijklmnop" ## Your API-Key
+client_secret = "client_secret" ## Your client_secret
+
+
+class ExampleToken:
+ """Returns the access token as dict."""
+ def __init__(self, api_key, client_secret):
+ self.client_id = api_key
+ self.client_secret = client_secret
+
+ async def token(self):
+ try:
+ get_token = GetAccessTokenClientCredentials(
+ self.client_id,
+ self.client_secret,
+ )
+ access_token_raw = await get_token.async_get_access_token()
+ except (ClientConnectorError, ClientError):
+ raise KeyError
+ return access_token_raw
+
+class MowerData:
+ """Returns the data of all mowers as dict."""
+ def __init__(self, api_key, access_token, provider, token_type):
+ self.api_key = api_key
+ self.access_token = access_token
+ self.provider = provider
+ self.token_type = token_type
+
+ async def mowers(self):
+ try:
+ get_mower_data = GetMowerData(
+ self.api_key,
+ self.access_token,
+ self.provider,
+ self.token_type,
+ )
+ mower_data = await get_mower_data.async_mower_state()
+ except (ClientConnectorError, ClientError):
+ return "Make sure, you are connected to the Authentication API and the Automower API"
+ return mower_data
+
+class SendingCommand:
+ """Returns the data of all mowers as dict."""
+ def __init__(self, api_key, access_token, provider, token_type, mower_id, payload, command_type):
+ self.api_key = api_key
+ self.access_token = access_token
+ self.provider = provider
+ self.token_type = token_type
+ self.mower_id = mower_id
+ self.payload = payload
+ self.command_type = command_type
+
+ async def mowers(self):
+ try:
+ send = Return(
+ self.api_key,
+ self.access_token,
+ self.provider,
+ self.token_type,
+ self.mower_id,
+ self.payload
+ self.command_type
+ )
+ send = await send.async_mower_command()
+ except Exception:
+ return "Something went wrong"
+ return send
+
+
+example = ExampleToken(api_key, client_id)
+token_output = asyncio.run(example.token())
+print(token_output)
+
+access_token = token_output["access_token"]
+provider = token_output["provider"]
+token_type = token_output["token_type"]
+
+example2 = MowerData(api_key, access_token, provider, token_type)
+mower_output = asyncio.run(example2.mowers())
+print(mower_output)
+
+mower_id = mower_output["data"][0]["id"] ## '0' is your first mower
+print ("Mower ID:", mower_id)
+command_type = "actions"
+payload = '{"data": {"type": "ResumeSchedule"}}' ## For more commands see: https://developer.husqvarnagroup.cloud/apis/Automower+Connect+API#/swagger
+example3 = SendingCommand(api_key, access_token, provider, token_type, mower_id, payload, command_type)
+result = asyncio.run(example3.mowers())
+print (result) ## if, 202, then okay
+```
+
+## AutomowerSession examples
+
+An AutomowerSession keeps track of the access token, refreshing it whenever
+needed and monitors a websocket for updates, whose data is sent to callbacks
+provided by the user.
+
+```python
+import asyncio
+import logging
+
+import aioautomower
+
+CLIENT_SECRET = "mystringpassword"
+API_KEY = "12312312-0126-6222-2662-3e6c49f0012c"
+
+
+async def main():
+ sess = aioautomower.AutomowerSession(API_KEY, token=None)
+
+ # Add a callback, can be done at any point in time and
+ # multiple callbacks can be added.
+ sess.register_cb(lambda data:print(data))
+
+ # If no token was passed to the constructor, we need to call login()
+ # before connect(). The token can be stored somewhere and passed to
+ # the constructor later on.
+ token = await sess.logincc(CLIENT_SECRET)
+
+ if not await sess.connect():
+ # If the token is still None or too old, the connect will fail.
+ print("Connect failed")
+ return
+ await asyncio.sleep(5)
+ status = await sess.get_status()
+ print(status)
+ await asyncio.sleep(30)
+
+ # The close() will stop the websocket and the token refresh tasks
+ await sess.close()
+
+asyncio.run(main())
+```
+
+## AutomowerCLI example
+
+An AutomowerSession that provides you with the data in a CLI
+
+`automower --client_secret 12312312-12ec-486b-a7a7-9d9b06644a14 --api-key 12312312-0126-6222-2662-3e6c49f0012c`
+
+
+%prep
+%autosetup -n aioautomower-2023.4.5
+
+%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-aioautomower -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 2023.4.5-1
+- Package Spec generated