# Path: moira_client/client.py
# class InvalidJSONError(Exception):
#     def __init__(self, content):
#         """
# 
#         :param content: bytes response content
#         """
#         self.content = content
# 
# Path: moira_client/client.py
# class ResponseStructureError(Exception):
#     def __init__(self, msg, content):
#         """
# 
#         :param msg: str error message
#         :param content: dict response content
#         """
#         self.msg = msg
#         self.content = content
# 
# Path: moira_client/models/base.py
# class Base:
#     @property
#     def id(self):
#         return self._id
# 
#     def __repr__(self):
#         return '({} {})'.format(self.__class__.__name__, self.id)
# 
#     def __unicode__(self):
#         return u'({} {})'.format(self.__class__.__name__, self.id)
# 
#     def __eq__(self, other):
#         return self.id == other.id
# 
#     def __ne__(self, other):
#         return self.id != other.id
# 
# Path: moira_client/models/common.py
# MINUTES_IN_HOUR = 60
# 
# def get_schedule(start_hour, start_minute, end_hour, end_minute, disabled_days):
#     days = []
#     for day in DAYS_OF_WEEK:
#         day_info = {
#             'enabled': True if day not in disabled_days else False,
#             'name': day
#         }
#         days.append(day_info)
#     return {
#         'days': days,
#         'startOffset': start_hour * MINUTES_IN_HOUR + start_minute,
#         'endOffset': end_hour * MINUTES_IN_HOUR + end_minute,
#     }


from ..client import InvalidJSONError
from ..client import ResponseStructureError
from .base import Base
from .common import MINUTES_IN_HOUR, get_schedule
        self.ignore_recoverings = ignore_recoverings

        if not plotting:
            plotting = {'enabled': False, 'theme': 'light'}
        self.plotting = plotting

    def _send_request(self, subscription_id=None):
        data = {
            'contacts': self.contacts,
            'tags': self.tags,
            'enabled': self.enabled,
            'any_tags': self.any_tags,
            'throttling': self.throttling,
            'sched': self.sched,
            'ignore_warnings': self.ignore_warnings,
            'ignore_recoverings': self.ignore_recoverings,
            'plotting': self.plotting
        }

        if subscription_id:
            data['id'] = subscription_id

        data['sched'] = get_schedule(self._start_hour, self._start_minute, self._end_hour, self._end_minute,
                                     self.disabled_days)

        if subscription_id:
            result = self._client.put('subscription/{id}'.format(id=subscription_id), json=data)
        else:
            result = self._client.put('subscription', json=data)
        if 'id' not in result:

# Path: moira_client/client.py
# class InvalidJSONError(Exception):
#     def __init__(self, content):
#         """
# 
#         :param content: bytes response content
#         """
#         self.content = content
# 
# Path: moira_client/client.py
# class ResponseStructureError(Exception):
#     def __init__(self, msg, content):
#         """
# 
#         :param msg: str error message
#         :param content: dict response content
#         """
#         self.msg = msg
#         self.content = content
# 
# Path: moira_client/models/base.py
# class Base:
#     @property
#     def id(self):
#         return self._id
# 
#     def __repr__(self):
#         return '({} {})'.format(self.__class__.__name__, self.id)
# 
#     def __unicode__(self):
#         return u'({} {})'.format(self.__class__.__name__, self.id)
# 
#     def __eq__(self, other):
#         return self.id == other.id
# 
#     def __ne__(self, other):
#         return self.id != other.id
# 
# Path: moira_client/models/common.py
# MINUTES_IN_HOUR = 60
# 
# def get_schedule(start_hour, start_minute, end_hour, end_minute, disabled_days):
#     days = []
#     for day in DAYS_OF_WEEK:
#         day_info = {
#             'enabled': True if day not in disabled_days else False,
#             'name': day
#         }
#         days.append(day_info)
#     return {
#         'days': days,
#         'startOffset': start_hour * MINUTES_IN_HOUR + start_minute,
#         'endOffset': end_hour * MINUTES_IN_HOUR + end_minute,
#     }


# Path: moira_client/models/subscription.py
from ..client import InvalidJSONError
from ..client import ResponseStructureError
from .base import Base
from .common import MINUTES_IN_HOUR, get_schedule

        self.ignore_recoverings = ignore_recoverings

        if not plotting:
            plotting = {'enabled': False, 'theme': 'light'}
        self.plotting = plotting

    def _send_request(self, subscription_id=None):
        data = {
            'contacts': self.contacts,
            'tags': self.tags,
            'enabled': self.enabled,
            'any_tags': self.any_tags,
            'throttling': self.throttling,
            'sched': self.sched,
            'ignore_warnings': self.ignore_warnings,
            'ignore_recoverings': self.ignore_recoverings,
            'plotting': self.plotting
        }

        if subscription_id:
            data['id'] = subscription_id

        data['sched'] = get_schedule(self._start_hour, self._start_minute, self._end_hour, self._end_minute,
                                     self.disabled_days)

        if subscription_id:
            result = self._client.put('subscription/{id}'.format(id=subscription_id), json=data)
        else:
            result = self._client.put('subscription', json=data)
        if 'id' not in result:

            raise ResponseStructureError("id doesn't exist in response", result)