diff options
Diffstat (limited to 'services/geoclue.py')
-rw-r--r-- | services/geoclue.py | 44 |
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)) |