Esempio n. 1
0
  def get(self):
    try:
      key = db.Key(self.request.get('key'))
    except:
      self.response.set_status(404)
      self.response.headers['Content-Type'] = 'text/plain; charset=utf-8'
      self.response.out.write('Not Found\n')
      return

    ci = ContactInfo.get(key)
    if ci is None:
      self.response.set_status(404)
      self.response.headers['Content-Type'] = 'text/plain; charset=utf-8'
      self.response.out.write('Not Found\n')
    else:
      self.response.set_status(200)
      self.response.headers['Content-Type'] \
        = 'application/octet-stream'
      self.response.headers['Content-Length'] \
        = len(ci.data)
      self.response.headers['Content-Disposition'] \
        = 'inline; filename="account_%d.enc"' % ci.account_id
      self.response.out.write(ci.data)
Esempio n. 2
0
 def query_for(self, q):
   return ContactInfo.gql(
     'WHERE account_id = :1 ORDER BY filed DESC, __key__',
     int(q)
   )
Esempio n. 3
0
 def query_for(self, q):
   return ContactInfo.gql(
     'WHERE domain = :1 ORDER BY account_id, filed DESC, __key__',
     q
   )
Esempio n. 4
0
  def post(self):
    self.response.headers['Content-Type'] = 'text/plain; charset=utf-8'
    ci = ContactInfo()
    try:
      if APPSEC != self.request.get('APPSEC'):
        raise ValueError

      ci.account_id = int(self.request.get('account_id'))
      if ci.account_id < 1:
        raise ValueError

      d = self.request.get('data')
      if d is None or len(d) < 1:
        raise ValueError
      ci.data = db.Blob(d.encode('utf-8'))

      ci.email = self.request.get('email')
      if ci.email is None or len(ci.email) == 0:
        ci.email = None
        ci.domain = None
      else:
        ci.email = ci.email.lower()
        ci.domain = ci.email[ci.email.index('@') + 1:]

      f = self.request.get('filed')
      if f is None or len(f) == 0:
        f = datetime.utcnow()
      else:
        f = datetime.utcfromtimestamp(int(f))
      ci.filed = f
    except:
      self.response.set_status(500)
      self.response.out.write('BAD INPUT\n')
      raise

    try:
      ci.put()
    except:
      self.response.set_status(500)
      self.response.out.write('DATA STORE FAIL\n')
      raise

    self.response.set_status(200)
    self.response.out.write('OK\n')