summaryrefslogtreecommitdiffstats
path: root/services/geoclue.py
diff options
context:
space:
mode:
Diffstat (limited to 'services/geoclue.py')
-rw-r--r--services/geoclue.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/services/geoclue.py b/services/geoclue.py
new file mode 100644
index 0000000..df1afd6
--- /dev/null
+++ b/services/geoclue.py
@@ -0,0 +1,44 @@
+from aglbaseservice import AGLBaseService, AFBResponse
+import asyncio
+import os
+
+
+class GeoClueService(AGLBaseService):
+ service = 'agl-service-geoclue'
+ parser = AGLBaseService.getparser()
+ parser.add_argument('--location', help='Get current location', action='store_true')
+
+ def __init__(self, ip, port=None, api='geoclue'):
+ super().__init__(ip=ip, port=port, api=api, service='agl-service-geoclue')
+
+ async def location(self):
+ return await self.request('location')
+
+ async def subscribe(self, event='location'):
+ return await super().subscribe(event=event)
+
+ async def unsubscribe(self, event='location'):
+ return await super().unsubscribe(event=event)
+
+
+async def main(loop):
+ args = GeoClueService.parser.parse_args()
+ gcs = await GeoClueService(args.ipaddr)
+
+ if args.location:
+ id = await gcs.location()
+ print(f'Sent location request with messageid {id}')
+ print(AFBResponse(await gcs.response()))
+
+ if args.subscribe:
+ for event in args.subscribe:
+ id = await gcs.subscribe(event)
+ print(f"Subscribed for {event} with messageid {id}")
+ print(AFBResponse(await gcs.response()))
+ if args.listener:
+ async for response in gcs.listener():
+ print(response)
+
+if __name__ == '__main__':
+ loop = asyncio.get_event_loop()
+ loop.run_until_complete(main(loop))