def POST(self): # Receive the passphrase through query params query = web.input( password = None, maxdays = 10, maxviews = 10 ) # Change output to JSON web.header('Content-type', 'application/json') # Generate unique code for phrase uuid = uuid4() phraseCode = str(uuid).split('-')[0] try: phraseid = model.add_phrase( phrase = query.password, code = base36decode(phraseCode), maxdays = int(query.maxdays), maxviews = int(query.maxviews) ) except(model.ModelError), e: web.internalerror(str(e)) return json.dumps(dict(error=str(e)))
def DELETE(self, arg): # Change output to JSON web.header('Content-type', 'application/json') if not arg: web.internalerror() return json.dumps(dict(error='must have code')) try: phrase = model.get_phrase(code=base36decode(arg)) seqID = phrase.get('id') except(), e: web.notfound() return json.dumps(dict(error='not found'))
def GET(self, arg=None): # Init templator tpl = web.template.render(settings.TEMPLATE_DIR, base='base', globals={'_':_}) # No argument, just return index if not arg: return tpl.index() phraseCode = base36decode(arg) # If an argument is provided then someone is trying to view a password try: phrase = model.get_phrase( code = phraseCode ) seqID = phrase.get('id') except(model.ModelError), e: web.notfound() return tpl.notfound()
web.internalerror(str(e)) raise try: generatedPass = generate_password( int(query.words), wordlist ) except(), e: web.internalerror(str(e)) raise web.ok() return json.dumps(dict(phrase=generatedPass)) # Request for a pre-existing phrase phraseCode = base36decode(arg) try: phrase = model.get_phrase(base36decode(phraseCode)) seqID = phrase.get('id') except(model.ModelError), e: web.notfound() return json.dumps(dict(error='not found')) except(), e: web.internalerror(str(e)) raise # Update number of views try: model.update_phrase(seqID) except(), e: