diff options
Diffstat (limited to 'tools/mpaste')
-rwxr-xr-x | tools/mpaste | 178 |
1 files changed, 0 insertions, 178 deletions
diff --git a/tools/mpaste b/tools/mpaste deleted file mode 100755 index 08af04b..0000000 --- a/tools/mpaste +++ /dev/null @@ -1,178 +0,0 @@ -#!/usr/bin/python - -# Pastes input from stdin to paste.mate-desktop.org - -# Copyright (C) 2013 Steve Zesch - -# Rewritten for Sticky notes 2014-10-09 -# Copyright (C) 2014 Sander Sweers - -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# TODO: cache language/expire results on disk -# TODO: If api is updated for registered users add back --author - -from __future__ import unicode_literals, print_function -from gi.repository import Gio -import json -import requests -import argparse -import sys - -def build_paste(args, data): - '''Build paste from arguments and data''' - values = {} - for opt, val in args.__dict__.items(): - if opt == 'infile': continue - if opt == 'title' and val: values[opt] = val[:29] - if val: values[opt] = val - - values['data'] = data - - return values - -def create_parser(): - '''Build argument parser''' - parser = argparse.ArgumentParser(prog='mpaste') - parser.add_argument('-t', '--title', dest='title', - help='title of this paste') - ## parser.add_argument('-a', '--author', dest='author', - ## help='author of this paste') - parser.add_argument('-p', '--private', dest='private', action='store_true', - help='should this paste be private') - parser.add_argument('-pwd', '--password', dest='password', - help='password of this paste') - parser.add_argument('-lang', '--language', dest='language', default="text", - help='language this paste is in') - parser.add_argument('-ll', '--language-list', dest='lang_list', action='store_true', - help='List all supported languages') - parser.add_argument('-e', '--expire', dest='expire', type=int, default=1800, - help='paste expiration in minutes') - parser.add_argument('infile', nargs='?', type=argparse.FileType('r'), default=sys.stdin, - help='The file to paste or when no file read stdin') - - return parser - -def get_params(session): - '''Retrieve valid parameters and defaults''' - param_api_url = 'http://paste.mate-desktop.org/api/json/parameter/' - params = {} - - resp_lang = session.get(param_api_url + 'language') - if resp_lang.status_code != 200: - params['languages'] = 'text' - print('Could not load languages from api, defaulting to \"text\"') - else: - params['languages'] = json.loads(resp_lang.content)['result']['values'] - - resp_expire = session.get(param_api_url + 'expire') - if resp_expire.status_code != 200: - params['expires'] = 1800 - print('Could not get expiration times, defaulting to 1800') - else: - params['expires'] = json.loads(resp_expire.content)['result']['values'] - - return params - -def get_proxies(): - '''Read proxy from gsettings''' - - proxies = {} - schemas = ('org.gnome.system.proxy.ftp', - 'org.gnome.system.proxy.http', - 'org.gnome.system.proxy.https', - 'org.gnome.system.proxy.socks') - - settings = Gio.Settings.new('org.gnome.system.proxy') - mode = settings['mode'] - - if mode == 'none': - return {} - - for schema in schemas: - settings = Gio.Settings.new(schema) - host = settings['host'] - port = str(settings['port']) - proxy_type = schema.split('.')[-1] - - if not host: - continue - - proxies[proxy_type] = ':'.join((host, port)) - - return proxies - -if __name__ == '__main__': - api_url = 'http://paste.mate-desktop.org/api/json/' - - # Get proxies from gsettings - proxies = get_proxies() - - # create session and add proxies - session = requests.session() - session.proxies = proxies - - params = get_params(session) - - # Create argument parser and read arguments - parser = create_parser() - args = parser.parse_args() - - # Print all supported languages - if args.lang_list: - print('Supported languages are:') - for lang in params['languages']: - print('* %s' % lang) - sys.exit() - - # Check if we are reading from a file or stdin - if sys.stdin.isatty(): - print('Reading file: %s ...' % args.infile.name) - data = args.infile.read() - else: - print('Reading from stdin ...') - data = sys.stdin.read() - - # Check if provided lang is supported - if not args.language in params['languages']: - print('Unsupported language: %s' % args.language) - print('Run --all-language to get a list of valid values') - sys.exit(1) - - # Check if expiration in minutes is valid - if not args.expire in params['expires']: - valid = ', '.join([str(i) for i in sorted(params['expires'])]) - print('Invalid expiring time: %s' % args.expire) - print('Valid expire values in minutes are: \n%s' % valid) - sys.exit(1) - - # Build the paste dict used by requests - paste = build_paste(args, data) - - # If we read a file and no title given use the file name - if not args.title and args.infile.name != '<stdin>': - paste['title'] = args.infile.name[:29] - - # Post the data to the website - resp = session.post(api_url + 'create', data=paste) - result = json.loads(resp.content)['result'] - - # Show url or error - if len(result) < 2: - print('Could not paste, got error: %s' % result['error']) - else: - print('Pasted successfully \o/') - print('Url: http://paste.mate-desktop.org/%s' % result['id']) - if result['hash']: print('Got the following hash: %s' % result['hash']) |