# -*- coding: utf-8 -*-
#
-# Copyright (c) 2010, 2011, 2013, 2014 Jack Kaliko <kaliko@azylum.org>
+# Copyright (c) 2010, 2011, 2013, 2014, 2015, 2020 kaliko <kaliko@azylum.org>
#
# This file is part of sima
#
"""
# pylint: disable=C0111
+import logging
import traceback
import sys
"""
aka = push(bytes(dic.get('apikey') + '=', 'utf-8'))
aka = getencoder('rot-13')(str((aka), 'utf-8'))[0]
- dic.update({'apikey':aka})
+ dic.update({'apikey': aka})
+
def get_mpd_environ():
"""
passwd = mpd_host_env[1]
return (host, environ.get('MPD_PORT', None), passwd)
+
def normalize_path(path):
"""Get absolute path
"""
return normpath(join(getcwd(), path))
return path
+
def exception_log():
"""Log unknown exceptions"""
- import logging
- log = logging.getLogger('sima')
+ log = logging.getLogger(__name__)
log.error('Unhandled Exception!!!')
log.error(''.join(traceback.format_exc()))
log.info('Please report the previous message'
class SigHup(Exception):
"""SIGHUP raises this Exception"""
- pass
+
# ArgParse Callbacks
class Obsolete(Action):
def __call__(self, parser, namespace, values, option_string=None):
raise ArgumentError(self, 'obsolete argument')
+
class FileAction(Action):
"""Generic class to inherit from for ArgParse action on file/dir
"""
def checks(self):
"""control method
"""
- pass
+
class Wfile(FileAction):
# pylint: disable=R0903
"""Is file writable
"""
def checks(self):
+ if isdir(self._file):
+ self.parser.error('need a file not a directory: {}'.format(self._file))
if not exists(self._dir):
#raise ArgumentError(self, '"{0}" does not exist'.format(self._dir))
- self.parser.error('file does not exist: {0}'.format(self._dir))
+ self.parser.error('directory does not exist: {0}'.format(self._dir))
if not exists(self._file):
# Is parent directory writable then
if not access(self._dir, W_OK):
if not access(self._file, W_OK):
self.parser.error('no write access to "{0}"'.format(self._file))
+
class Rfile(FileAction):
# pylint: disable=R0903
"""Is file readable
if not access(self._file, R_OK):
self.parser.error('no read access to "{0}"'.format(self._file))
+
class Wdir(FileAction):
# pylint: disable=R0903
"""Is directory writable
if not access(self._file, W_OK):
self.parser.error('no write access to "{0}"'.format(self._file))
+
class Throttle:
"""throttle decorator"""
def __init__(self, wait):
return result
return wrapper
-# http client exceptions (for webservices)
-class WSError(Exception):
+class MPDSimaException(Exception):
+ """Generic MPD_sima Exception"""
+
+
+# http client exceptions (for webservices)
+class WSError(MPDSimaException):
pass
+
class WSNotFound(WSError):
pass
+
class WSTimeout(WSError):
pass
+
class WSHTTPError(WSError):
pass
+class PluginException(MPDSimaException):
+ pass
+
# VIM MODLINE
# vim: ai ts=4 sw=4 sts=4 expandtab