GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — bpython/bpython/paste.py at master · Zaizai56/bpython Expand file tree/ Copy pathpaste.pyMore file actions 112 lines (91 loc) · 3.95 KB / Copy pathpaste.pyFile metadata and controls112 lines (91 loc) · 3.95 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 # encoding: utf-8 # The MIT License # # Copyright (c) 2014-2015 Sebastian Ramacher # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. from locale import getpreferredencoding from six.moves.urllib_parse import quote as urlquote, urljoin, urlparse from string import Template import errno import requests import subprocess import unicodedata from bpython.translations import _ class PasteFailed(Exception): pass class PastePinnwand(object): def __init__(self, url, expiry, show_url, removal_url): self.url = url self.expiry = expiry self.show_url = show_url self.removal_url = removal_url def paste(self, s): """Upload to pastebin via json interface.""" url = urljoin(self.url, '/json/new') payload = { 'code': s, 'lexer': 'pycon', 'expiry': self.expiry } try: response = requests.post(url, data=payload, verify=True) response.raise_for_status() except requests.exceptions.RequestException as exc: raise PasteFailed(exc.message) data = response.json() paste_url_template = Template(self.show_url) paste_id = urlquote(data['paste_id']) paste_url = paste_url_template.safe_substitute(paste_id=paste_id) removal_url_template = Template(self.removal_url) removal_id = urlquote(data['removal_id']) removal_url = removal_url_template.safe_substitute( removal_id=removal_id) return (paste_url, removal_url) class PasteHelper(object): def __init__(self, executable): self.executable = executable def paste(self, s): """Call out to helper program for pastebin upload.""" try: helper = subprocess.Popen('', executable=self.executable, stdin=subprocess.PIPE, stdout=subprocess.PIPE) helper.stdin.write(s.encode(getpreferredencoding())) output = helper.communicate()[0].decode(getpreferredencoding()) paste_url = output.split()[0] except OSError as e: if e.errno == errno.ENOENT: raise PasteFailed(_('Helper program not found.')) else: raise PasteFailed(_('Helper program could not be run.')) if helper.returncode != 0: raise PasteFailed(_('Helper program returned non-zero exit ' 'status %d.' % (helper.returncode, ))) if not paste_url: raise PasteFailed(_('No output from helper program.')) else: parsed_url = urlparse(paste_url) if (not parsed_url.scheme or any(unicodedata.category(c) == 'Cc' for c in paste_url)): raise PasteFailed(_('Failed to recognize the helper ' 'program\'s output as an URL.')) return paste_url, None |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |