19
|
1 '''
|
|
2 Register purls at the server
|
|
3 Created on 22.11.2012
|
|
4
|
|
5 @author: dwinter
|
|
6 '''
|
|
7
|
|
8 import web
|
|
9 import base64
|
|
10 import re
|
|
11 import config
|
|
12 from managePurls.manageIndexMetaPURLs import IndexMetaPURLManager
|
30
|
13 import json
|
19
|
14
|
|
15 class getPurls:
|
|
16
|
|
17 def __init__(self):
|
|
18 self.render = web.template.render(config.TEMPLATE_PATH)
|
|
19 self.purlManager = IndexMetaPURLManager()
|
|
20
|
|
21 def GET(self):
|
22
|
22
|
19
|
23 auth = web.ctx.env.get('HTTP_AUTHORIZATION')
|
|
24
|
32
|
25 params = web.input();
|
|
26
|
19
|
27 authreq = False
|
22
|
28 if auth is None:#no authentification needed, SHOULD BE DONE VIA APACHE!!
|
|
29 #authreq = True
|
32
|
30
|
|
31
|
|
32 if params.get("user",None) is not None:
|
|
33 username = params.get("user")
|
|
34 else:
|
|
35 username = "internal user (Please replace with your username)"
|
|
36
|
|
37
|
|
38
|
19
|
39 else:
|
22
|
40
|
19
|
41 auth = re.sub('^Basic ','',auth)
|
|
42 username,password = base64.decodestring(auth).split(':')
|
|
43
|
32
|
44
|
|
45 if params.get("number",None) is not None:
|
|
46 amount = params.get("number")
|
|
47 else:
|
|
48 amount =1
|
|
49
|
19
|
50
|
|
51 if authreq:
|
|
52 web.header('WWW-Authenticate','Basic realm="Auth example"')
|
|
53 web.ctx.status = '401 Unauthorized'
|
|
54 return
|
|
55
|
32
|
56 return self.render.registerPurls(username,amount)
|
19
|
57
|
|
58 def POST(self):
|
|
59 inp = web.input()
|
|
60
|
|
61 username=inp.get("userName",None)
|
|
62 amount=inp.get("amount",None)
|
|
63
|
34
|
64 outFormat=inp.get("format","html")
|
|
65
|
19
|
66 if (username==None) or (amount==None):
|
34
|
67 raise web.badrequest("UserName and amount have to be send!")
|
19
|
68
|
|
69 try:
|
|
70 amount=int(amount)
|
|
71 except:
|
|
72 raise web.badrequest("Amount is not an integer!")
|
|
73
|
34
|
74 if amount>1000:
|
19
|
75 raise web.badrequest("Amount is to large (maximum 10)")
|
|
76
|
|
77 purls=[]
|
|
78 for i in range(amount):
|
|
79 purls.append(self.purlManager.register(user=username))
|
|
80
|
34
|
81 if outFormat == "html":
|
|
82 return self.render.registeredPurlsResponse(purls)
|
|
83 elif outFormat == "plain":
|
|
84 ret=""
|
|
85 for p in purls:
|
|
86 ret+="%s\n"%p[1]
|
30
|
87
|
34
|
88 web.header('Content-Type', 'text/plain')
|
|
89 return ret
|
|
90 elif outFormat == "plain-noPrefix":
|
|
91 ret=""
|
|
92 for p in purls:
|
|
93 ret+="%s\n"%p[1].replace("MPIWG:","")
|
|
94
|
|
95 web.header('Content-Type', 'text/plain')
|
|
96 return ret
|
|
97 else:
|
|
98 raise web.badrequest("Allowed parameters for format are only html, plain and plain-noPrefix. The default is html was %s.."%outFormat)
|
30
|
99 class randomSearch:
|
|
100 def __init__(self):
|
|
101
|
|
102 self.purlManager = IndexMetaPURLManager()
|
|
103
|
|
104 def GET(self):
|
|
105 lst = self.purlManager.getExistingRandom(3);
|
|
106
|
|
107 return json.dumps(lst)
|
|
108
|
|
109
|
|
110 class lastEntries:
|
|
111 def __init__(self):
|
|
112
|
|
113 self.purlManager = IndexMetaPURLManager()
|
|
114
|
|
115 def GET(self):
|
|
116 lst = self.purlManager.getLastEntries(3)
|
|
117
|
|
118 return json.dumps(lst)
|
38
|
119
|
|
120 class dris:
|
|
121 def __init__(self):
|
|
122 self.purlManager =IndexMetaPURLManager()
|
|
123
|
|
124 def GET(self):
|
|
125
|
|
126 params = web.input();
|
|
127
|
|
128 limit = params.get("limit",None)
|
|
129 offset = params.get("offset",None)
|
|
130 format =params.get("format","json")
|
|
131
|
|
132 lst = self.purlManager.getAllPurls(limit=limit,offset=offset,isDri=True)
|
|
133
|
|
134 if format=="json":
|
|
135 web.header('Content-Type', 'application/json')
|
|
136 return json.dumps(lst)
|
|
137 elif format =="csv":
|
|
138 web.header('Content-Type', 'text/plain')
|
|
139 str =""
|
|
140 for entry in lst:
|
|
141 str+="%s,%s\n"%(entry['path'],entry['dri'])
|
|
142
|
|
143 return str
|
|
144 else:
|
|
145 raise web.badrequest("Allowed parameters for format are only plain and json. The default is json. Parameter was %s.."%format)
|
|
146
|
30
|
147
|
|
148
|
|
149
|