import json
import urllib.request


__author__ = 'Anton Vakhrushev'
__email__ = 'anwinged@ya.ru'


MDASH_URL = 'http://mdash.ru/api.v1.php'


class TypographError(RuntimeError):
    pass


class Typograph(object):

    def __init__(self, rules = None):
        self.rules = self.__prepare_rules(rules)

    def process(self, text):
        data = self.__prepare_data(text)
        answer = self.__request(data)
        answer = json.loads(answer)
        self.__ensure_answer_is_correct(answer)
        return answer['result']

    def __prepare_data(self, text):
        data = {}
        data.update(self.rules)
        data.update({'text': text})
        return data

    def __request(self, data):
        data = urllib.parse.urlencode(data)
        data = data.encode('utf-8')
        request = urllib.request.Request(MDASH_URL, data)
        responce = urllib.request.urlopen(request)
        return responce.read().decode('utf-8')

    def __ensure_answer_is_correct(self, answer):
        if answer.get('status') == 'error':
            raise TypographError()

    def __prepare_rules(self, params):

        def convert(v):
            return 'on' if v == 'on' or v == True else 'off'

        result = {}
        params = params or {}

        for k in params:
            result[k] = convert(params[k])

        return result


if __name__ == '__main__':
    params = {
        'Text.paragraphs': False,
        'Text.breakline': 'off',
    }
    t = Typograph(params)
    print(t.process('"Вы все еще кое-как верстаете в "Ворде"? - Тогда мы идем к вам!"'))