Changeset 519
- Timestamp:
- 03/17/08 09:18:30 (8 months ago)
- Files:
-
- trunk/py/wscompose/validate.py (modified) (1 diff)
- trunk/py/wscompose/__init__.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/py/wscompose/validate.py
r516 r519 354 354 355 355 return valid 356 357 # ########################################################## 358 359 def json_callback(self, func) : 360 361 if not self.re['label'].match(func) : 362 raise Exception, "Invalid JSON callback name" 363 364 return func 356 365 357 366 # ########################################################## trunk/py/wscompose/__init__.py
r501 r519 219 219 def send_map (self, img) : 220 220 221 # Oh PIL, why don't you have a 'tostringDWIM' method? 222 221 if self.ctx['output'] == 'json' : 222 return self.send_map_as_json(img) 223 224 # 225 223 226 fh = StringIO.StringIO() 224 227 img.save(fh, "PNG") … … 233 236 self.wfile.write(fh.getvalue()) 234 237 return 235 238 239 # ########################################################## 240 241 def send_map_as_json (self, img) : 242 243 js = self.generate_javascript_output(img) 244 245 self.send_response(200, "OK") 246 self.send_header("Content-Type", "application/json") 247 self.send_header("Content-Length", len(js)) 248 249 self.send_x_headers(img) 250 self.end_headers() 251 252 self.wfile.write(js) 253 return 254 255 # ########################################################## 256 257 def generate_javascript_output(self, img) : 258 259 import base64 260 261 fh = StringIO.StringIO() 262 img.save(fh, "PNG") 263 264 js = "{\"data\":\"%s\"})" % base64.b64encode(fh.getvalue()) 265 266 if self.ctx.has_key('json_callback') : 267 js = "%s(%s)" % (self.ctx['json_callback'], js) 268 269 return js 270 236 271 # ########################################################## 237 272 … … 320 355 # 321 356 322 valid = { }357 valid = {'output' : 'png'} 323 358 324 359 # … … 465 500 self.error(141, e) 466 501 return False 467 502 503 # 504 # json ? 505 # 506 507 if params.has_key('output') : 508 509 if params['output'][0] == 'javascript' : 510 pass 511 512 elif params['output'][0] == 'json' : 513 if not params.has_key('callback') : 514 self.error(142, 'Missing JSON callback') 515 return False 516 517 try : 518 valid['json_callback'] = validator.json_callback(params['callback'][0]) 519 except Exception, e: 520 self.error(143, e) 521 return False 522 else : 523 self.error(144, "Not a valid output format") 524 return False 525 526 valid['output'] = 'json' 527 528 468 529 # 469 530 # whoooosh … … 635 696 err_code = self.sanitize(err_code) 636 697 err_msg = self.sanitize(err_msg) 698 699 print "[%s] %s" % (err_code, err_msg) 637 700 638 701 self.send_response(500, "Server Error")
