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
|
#!/usr/bin/env python
''' [cat |] %prog [-g id | -d id | [-i n1 id1 .. -i nN idN] file1 .. fileN] '''
__version__ = '0.3'
import netrc, os, sys
def auth():
''' netrc: machine ix.io login USERNAME password TOKEN '''
try:
auth = netrc.netrc().authenticators('ix.io')
except:
return {}
if not auth:
return {}
return {'login' : auth[0], 'token' : auth[2] }
def mkreq(files, data={}, i=0):
for filename in files:
if filename is sys.stdin:
if os.isatty(sys.stdin.fileno()):
print '^C to exit, ^D to send'
fname, ext = '', ''
try:
contents = sys.stdin.read()
except KeyboardInterrupt:
sys.exit()
if not contents:
sys.exit()
elif os.path.exists(filename):
contents = open(filename).read()
filename, ext = os.path.splitext(filename)
fname = os.path.basename(filename)
else:
continue
i += 1
data['f:%d' % i] = contents
data['name:%d' % i] = fname
data['ext:%d' % i] = ext
return data
if __name__ == '__main__':
from optparse import OptionParser
from urllib import urlencode
from urllib2 import urlopen
parser = OptionParser(version=__version__,
usage=__doc__,
description=auth.__doc__)
parser.add_option('-g', '--get', help='get paste identified by ID')
parser.add_option('-d', '--delete', help='delete paste identified by ID')
parser.add_option('-i', '--id', action='append', nargs=2,
help='two params (N, ID) replace paste ID with file N')
opts, args = parser.parse_args()
if opts.get:
print urlopen('http://ix.io/%s' % (opts.get)).read().strip()
else:
if not args:
args = [sys.stdin]
data = auth()
if opts.delete:
data['rm'] = opts.delete
else:
data.update(mkreq(args))
if opts.id:
for i in opts.id:
try:
data['id:%d' % int(i[0])] = i[1]
except ValueError:
parser.error('invalid file number "%s" in --id option' % i[0])
print urlopen('http://ix.io', urlencode(data)).read().strip()
|