Source code for ouimeaux.config

import os
import yaml


[docs]def in_home(*path): try: from win32com.shell import shellcon, shell except ImportError: home = os.path.expanduser("~") else: home = shell.SHGetFolderPath(0, shellcon.CSIDL_APPDATA, 0, 0) return os.path.join(home, *path)
[docs]def ensure_directory(directory): if not os.path.exists(directory): os.makedirs(directory) return directory
[docs]class WemoConfiguration(object): def __init__(self, filename=None): if filename is None: ensure_directory(in_home('.wemo')) filename = in_home('.wemo', 'config.yml') if not os.path.isfile(filename): with open(filename, 'w') as f: f.write(""" aliases: # Shortcuts to longer device names. Uncommenting the following # line will allow you to execute 'wemo switch lr on' instead of # 'wemo switch "Living Room Lights" on' # # lr: Living Room Lights # ip:port to bind to when receiving responses from discovery. # The default is first DNS resolution of local host, port 54321 # # bind: 10.1.2.3:9090 # Web app bind address # # listen: 0.0.0.0:5000 # Require basic authentication (username:password) for the web app # # auth: admin:password """) with open(filename, 'r') as cfg: self._parsed = yaml.load(cfg) @property def aliases(self): return self._parsed.get('aliases') or {} @property def bind(self): return self._parsed.get('bind', None) @property def listen(self): return self._parsed.get('listen', None) @property def auth(self): return self._parsed.get('auth', None)