annotate restService/getPurls.py @ 40:671dd1e4bd09 default tip

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