def post(self): step = self.request.get('step',"") phone = self.request.get('phone',"") self_recorded = self.request.get('self_recorded',"") if (not phone) and (not step): return self.response.out.write('no phone given') if (step): access_key = self.request.get('access_key') secret = self.request.get('secret') ds_entry = ValidationRequest.get_by_key_name(access_key) if (ds_entry.secret == int(secret)): return self.render_response('validation-demo-right.html') else: return self.render_response('validation-demo-wrong.html') else: ip = self.request.remote_addr ds_existing = DemoClient.get_by_key_name(ip) if not ds_existing: DemoClient(key_name=ip, times=1).put(rpc=db.create_rpc()) else: if (ds_existing.times > 4): return self.redirect('/validator/demo?step=fail') ds_existing.times = ds_existing.times + 1 ds_existing.put(rpc=db.create_rpc()) target = 'tel:'+phone secret = tropo.generate_secret() access_key = tropo.generate_key() call_context = { 'to':target, 'intro':'This is our service demo! Your secret code is :', 'secret':secret, 'access_key':access_key, 'self_recorded':self_recorded, 'callback_host':CALLBACK_HOST } fetch_rpc = tropo.tropo_run_script(call_context, async=True) rpc = db.create_rpc() validation_entry = ValidationRequest( key_name = access_key, target = target, api_key = tropo.DEMO_API_KEY, secret = int(secret)).put(rpc=rpc) rpc.wait() fetch_rpc.wait() return self.redirect('/validator/demo?step=2&access_key='+access_key)
def get(self): target = self.request.get('target') api_key = self.request.get('api_key') secret = self.request.get('secret') intro = self.request.get('intro') if (not target) or (not api_key): return self.response.out.write('target and service key is required params.') method = re.match('(\\w+):', target) if (method is None): return self.response.out.write('target '+target+' not valid') ds_user_entry = ServiceUser.get_by_key_name(api_key) if (not ds_user_entry): return self.response.out.write('api key ' + api_key + ' does not exist') method = method.group(1) access_key = tropo.generate_key() if (method == 'tel' or 'sip'): if not secret: secret = tropo.generate_secret() if not intro: intro = "Hello! Your secret code is :" context = { 'to':target, 'secret':secret, 'intro':intro, 'access_key':access_key } http_rpc = tropo.tropo_run_script(context, async=True) ds_rpc = db.create_rpc() ValidationRequest( target = target, api_key = api_key, key_name = access_key, secret = int(secret) ).put(rpc=ds_rpc) resp = json.dumps({'access_key':access_key,'secret':secret}) http_rpc.wait() ds_rpc.wait() return self.response.out.write(resp) return self.response.out.write('method not supported.')