#!/usr/bin/env python2
# -*- coding: utf-8 -*-

"""
pasteee module
Allows pasting to https://paste.ee
https://github.com/i-ghost/pasteee
"""

# 2 <-> 3
from urllib.request import urlopen
from urllib.request import Request as urlrequest
from urllib.parse import urlencode
from urllib import error as urlerror
import json


class PasteError(Exception):
    """Exception class for this module"""
    pass


class Paste(object):
    def __new__(cls, paste,
                private=True, lang="plain",
                key="public", desc="",
                expire=0, views=0, encrypted=False):
        if not paste:
            raise PasteError("No paste provided")
        if expire and views:
            # API incorrectly returns success so we raise error locally
            raise PasteError("Options 'expire' and 'views' are mutually exclusive")
        request = urlrequest(
            "http://paste.ee/api",
            data=urlencode(
                {
                    'paste': paste,
                    'private': bool(private),
                    'language': lang,
                    'key': key,
                    'description': desc,
                    'expire': expire,
                    'views': views,
                    'encrypted': bool(encrypted),
                    'format': "json"
                }
            ).encode("utf-8"),
            headers={'User-Agent': 'Mozilla/5.0'}
        )
        try:
            result = json.loads(urlopen(request).read().decode("utf-8"))
            return result["paste"]
        except urlerror.HTTPError:
            print("Couldn't send paste")
            raise
        except KeyError:
            raise PasteError("Invalid paste option: %s" % (result["error"]))
#!/usr/bin/env python2
# -*- coding: utf-8 -*-

"""
pasteee module
Allows pasting to https://paste.ee
https://github.com/i-ghost/pasteee
"""

# 2 <-> 3
from urllib.request import urlopen
from urllib.request import Request as urlrequest
from urllib.parse import urlencode
from urllib import error as urlerror
import json


class PasteError(Exception):
    """Exception class for this module"""
    pass


class Paste(object):
    def __new__(cls, paste,
                private=True, lang="plain",
                key="public", desc="",
                expire=0, views=0, encrypted=False):
        if not paste:
            raise PasteError("No paste provided")
        if expire and views:
            # API incorrectly returns success so we raise error locally
            raise PasteError("Options 'expire' and 'views' are mutually exclusive")
        request = urlrequest(
            "http://paste.ee/api",
            data=urlencode(
                {
                    'paste': paste,
                    'private': bool(private),
                    'language': lang,
                    'key': key,
                    'description': desc,
                    'expire': expire,
                    'views': views,
                    'encrypted': bool(encrypted),
                    'format': "json"
                }
            ).encode("utf-8"),
            headers={'User-Agent': 'Mozilla/5.0'}
        )
        try:
            result = json.loads(urlopen(request).read().decode("utf-8"))
            return result["paste"]
        except urlerror.HTTPError:
            print("Couldn't send paste")
            raise
        except KeyError:
            raise PasteError("Invalid paste option: %s" % (result["error"]))
#!/usr/bin/env python2 # -*- coding: utf-8 -*- pasteee module Allows pasting to https://paste.ee https://github.com/i-ghost/pasteee # 2 <-> 3 Exception class for this module # API incorrectly returns success so we raise error locally