Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
    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.')