forked from wmo-registers/code-manuals
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupload.py
84 lines (71 loc) · 2.46 KB
/
upload.py
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
import argparse
import copy
import glob
import numpy as np
import os
import requests
import subprocess
import time
import sys
import urllib
parser = argparse.ArgumentParser()
parser.add_argument('user_id')
parser.add_argument("passcode")
parser.add_argument('reg_uri')
parser.add_argument('root')
args = parser.parse_args()
uid = args.user_id
pss = args.passcode
def authenticate(session, base, userid, pss):
auth = session.post('{}/system/security/apilogin'.format(base),
data={'userid':userid,
'password':pss})
if not auth.status_code == 200:
raise ValueError('auth failed')
return session
def post_file(session, postfile, container, status, bulk=False):
with open(postfile, 'r') as pf:
pdata = pf.read()
params = {'status':status}
if container == '.':
container = ''
else:
container = '/' + container
if not args.root and not container:
container = '/'
if bulk:
params = 'batch-managed&' + urllib.urlencode(params)
url = "{u}{r}{c}".format(u=args.reg_uri,
r=args.root,
c=container)
print url
res = session.post(url,
headers={'Content-type':'text/turtle'},
data=pdata,
params=params)
if res.status_code > 299:
if res.status_code == 403:
exists = session.get(url)
if exists.status_code != 200:
raise ValueError('Http response code indicates failure\n{}'.format(res.status_code))
else:
raise ValueError('Http response code indicates failure\n{}'.format(res.status_code))
return session
rootDir = os.path.join(os.getcwd(), 'ttl')
session = requests.Session()
session = authenticate(session, args.reg_uri, args.user_id, args.passcode)
for dirName, subdirList, fileList in os.walk(rootDir):
for fname in fileList:
print fname
status = 'Experimental'
status = 'Stable'
if fname.startswith('deprec_'):
status = 'Deprecated'
elif fname.startswith('rsvd_'):
status = 'Reserved'
if fname.endswith('.ttl'):
post_file(session,
os.path.join(dirName,fname),
os.path.relpath(dirName, rootDir),
status,
fname.startswith('bulk_'))