def readJSONString(self, skipContext):
     string = []
     if skipContext is False:
         self.context.read()
     self.readJSONSyntaxChar(QUOTE)
     while True:
         character = self.reader.read()
         if character == QUOTE:
             break
         if character == ESCSEQ[0]:
             character = self.reader.read()
             if character == ESCSEQ[1]:
                 self.readJSONSyntaxChar(ZERO)
                 self.readJSONSyntaxChar(ZERO)
                 character = json.JSONDecoder().decode('"\u00%s"' %
                                                       self.trans.read(2))
             else:
                 off = ESCAPE_CHAR.find(character)
                 if off == -1:
                     raise TProtocolException(
                         TProtocolException.INVALID_DATA,
                         "Expected control char")
                 character = ESCAPE_CHAR_VALS[off]
         string.append(character)
     return ''.join(string)
 def readMessageBegin(self):
     self.resetReadContext()
     self.readJSONArrayStart()
     if self.readJSONInteger() != VERSION:
         raise TProtocolException(TProtocolException.BAD_VERSION,
                                  "Message contained bad version.")
     name = self.readJSONString(False)
     typen = self.readJSONInteger()
     seqid = self.readJSONInteger()
     return (name, typen, seqid)
 def readJSONInteger(self):
     self.context.read()
     self.readJSONQuotes()
     numeric = self.readJSONNumericChars()
     self.readJSONQuotes()
     try:
         return int(numeric)
     except ValueError:
         raise TProtocolException(TProtocolException.INVALID_DATA,
                                  "Bad data encounted in numeric data")
 def readJSONDouble(self):
     self.context.read()
     if self.reader.peek() == QUOTE:
         string = self.readJSONString(True)
         try:
             double = float(string)
             if (self.context.escapeNum is False and not math.isinf(double)
                     and not math.isnan(double)):
                 raise TProtocolException(
                     TProtocolException.INVALID_DATA,
                     "Numeric data unexpectedly quoted")
             return double
         except ValueError:
             raise TProtocolException(TProtocolException.INVALID_DATA,
                                      "Bad data encounted in numeric data")
     else:
         if self.context.escapeNum() is True:
             self.readJSONSyntaxChar(QUOTE)
         try:
             return float(self.readJSONNumericChars())
         except ValueError:
             raise TProtocolException(TProtocolException.INVALID_DATA,
                                      "Bad data encounted in numeric data")
Example #5
0
    def readMessageBegin(self):
        #readAllData = json.loads(self.trans.getvalue())
        #self.read_all_data = readAllData
        #ver      = readAllData[1]
        #retTuple = (readAllData[1], readAllData[2], readAllData[3])

        self.resetReadContext()
        self.readJSONArrayStart()
        if self.readJSONInteger() != VERSION:
            raise TProtocolException(TProtocolException.BAD_VERSION,
                                     "Message contained bad version.")
        name = self.readJSONString(False)
        typen = self.readJSONInteger()
        seqid = self.readJSONInteger()

        return (name, typen, seqid)
 def readJSONSyntaxChar(self, character):
     current = self.reader.read()
     if character != current:
         raise TProtocolException(TProtocolException.INVALID_DATA,
                                  "Unexpected character: %s" % current)