Example #1
0
 def parse(self):
     f = open(self.filename, 'r')
     headers = Message(f)
     c = f.read()
     f.close()
     if not c.strip():
         c = headers.get_payload()
     if not headers.keys():
         raise Exception("File %s has no headers" % self.filename)
     self.description = headers['Description']
     self.expect = headers.get('Expect', '')
     self.ignore = headers.get('Ignore')
     self.options = [
         o.strip() for o in headers.get('Options', '').split(',')
         if o.strip()
     ]
     parts = bar_re.split(c)
     self.input = parts[0].rstrip() + '\n'
     if parts[1:]:
         self.expect = parts[1].rstrip() + '\n'
     else:
         self.expect = None
Example #2
0
 def parse(self):
     f = open(self.filename, "r")
     headers = Message(f)
     c = f.read()
     f.close()
     if not c.strip():
         c = headers.get_payload()
     if not headers.keys():
         raise Exception("File %s has no headers" % self.filename)
     self.description = headers["Description"]
     self.expect = headers.get("Expect", "")
     self.ignore = headers.get("Ignore")
     self.options = [
         o.strip() for o in headers.get("Options", "").split(",")
         if o.strip()
     ]
     parts = bar_re.split(c)
     self.input = parts[0].rstrip() + "\n"
     if parts[1:]:
         self.expect = parts[1].rstrip() + "\n"
     else:
         self.expect = None
Example #3
0
 def parse(self):
     f = open(self.filename, 'r')
     headers = Message(f)
     c = f.read()
     f.close()
     if not c.strip():
         c = headers.get_payload()
     if not headers.keys():
         raise Exception(
             "File %s has no headers" % self.filename)
     self.description = headers['Description']
     self.expect = headers.get('Expect', '')
     self.ignore = headers.get('Ignore')
     self.options = [
         o.strip() for o in headers.get('Options', '').split(',')
         if o.strip()]
     parts = bar_re.split(c)
     self.input = parts[0].rstrip() + '\n'
     if parts[1:]:
         self.expect = parts[1].rstrip() + '\n'
     else:
         self.expect = None
Example #4
0
class RFC822File(TextFile):
    """ holds a rfc822 Message """

    attrs = {}
    message = None

    list_types = (type([]), type(()))
    str_types = (type(''),)

    def new(self, **kw):
        if 'attrs' in kw.keys():
            self.set_attrs(kw['attrs'])


    def _load_state_from_file(self, file):
        self.attrs = {}
        self.message = Message(file)
        for k in self.message.keys():
            if self.schema is None:
                if len(self.message.getheaders(k)) == 1:
                    self.attrs[k] = self.message.getheader(k)
                else:
                    self.attrs[k] = self.message.getheaders(k)
            elif k in self.schema:
                if issubclass(self.schema[k], String):
                    self.attrs[k] = self.message.getheader(k)
                elif issubclass(self.schema[k], Tokens):
                    self.attrs[k] = self.message.getheaders(k)


    def to_str(self):
        data = ''
        list_types = (type([]), type(()))
        str_types = (type(''),)
        for key, val in self.attrs.items():
            if type(val) in str_types:
                data += '%s: %s\n' % (key, val)
            elif type(val) in list_types:
                # a new line for each item of the list
                for v in val:
                    data += '%s: %s\n' % (key, v)

        return data


    #######################################################################
    # API
    #######################################################################
    def set_attrs(self, attrs):
        # Check types of values
        type_error_msg = 'One of the given values is not compatible'
        for key, val in attrs.items():
            if type(val) in self.list_types:
                for v in val:
                    if type(v) not in self.str_types:
                        raise TypeError, type_error_msg
            elif self.schema is not None and key not in self.schema:
                del attrs[key]

        # Now attrs is sure
        self.attrs = attrs
        self.set_changed()


    def get_attrs(self):
        if self.schema is not None:
            for key in self.schema:
                if key not in self.attrs:
                    self.attrs[key] = self.schema[key].get_default()
        return self.attrs
Example #5
0
class RFC822File(TextFile):
    """ holds a rfc822 Message """

    attrs = {}
    message = None

    list_types = (type([]), type(()))
    str_types = (type(''), )

    def new(self, **kw):
        if 'attrs' in kw.keys():
            self.set_attrs(kw['attrs'])

    def _load_state_from_file(self, file):
        self.attrs = {}
        self.message = Message(file)
        for k in self.message.keys():
            if self.schema is None:
                if len(self.message.getheaders(k)) == 1:
                    self.attrs[k] = self.message.getheader(k)
                else:
                    self.attrs[k] = self.message.getheaders(k)
            elif k in self.schema:
                if issubclass(self.schema[k], String):
                    self.attrs[k] = self.message.getheader(k)
                elif issubclass(self.schema[k], Tokens):
                    self.attrs[k] = self.message.getheaders(k)

    def to_str(self):
        data = ''
        list_types = (type([]), type(()))
        str_types = (type(''), )
        for key, val in self.attrs.items():
            if type(val) in str_types:
                data += '%s: %s\n' % (key, val)
            elif type(val) in list_types:
                # a new line for each item of the list
                for v in val:
                    data += '%s: %s\n' % (key, v)

        return data

    #######################################################################
    # API
    #######################################################################
    def set_attrs(self, attrs):
        # Check types of values
        type_error_msg = 'One of the given values is not compatible'
        for key, val in attrs.items():
            if type(val) in self.list_types:
                for v in val:
                    if type(v) not in self.str_types:
                        raise TypeError, type_error_msg
            elif self.schema is not None and key not in self.schema:
                del attrs[key]

        # Now attrs is sure
        self.attrs = attrs
        self.set_changed()

    def get_attrs(self):
        if self.schema is not None:
            for key in self.schema:
                if key not in self.attrs:
                    self.attrs[key] = self.schema[key].get_default()
        return self.attrs