1# Copyright (c) 2017, The MITRE Corporation. All rights reserved.
2# See LICENSE.txt for complete terms.
3
4import sys
5
6from mixbox.binding_utils import *
7from . import cybox_common
8from . import address_object
9from . import port_object
10from . import uri_object
11
12
13class HTTPRequestResponseType(GeneratedsSuper):
14    """The HTTPRequestResponseType captures a single HTTP request/response
15    pair.The ordinal_position attribute specifies the ordinal
16    positioning of the HTTP request/response pair in the context of
17    the HTTP session. This may be useful in certain cases for
18    preserving observed HTTP request/response ordering."""
19    subclass = None
20    superclass = None
21    def __init__(self, ordinal_position=None, HTTP_Client_Request=None, HTTP_Provisional_Server_Response=None, HTTP_Server_Response=None):
22        self.ordinal_position = _cast(int, ordinal_position)
23        self.HTTP_Client_Request = HTTP_Client_Request
24        self.HTTP_Provisional_Server_Response = HTTP_Provisional_Server_Response
25        self.HTTP_Server_Response = HTTP_Server_Response
26    def factory(*args_, **kwargs_):
27        if HTTPRequestResponseType.subclass:
28            return HTTPRequestResponseType.subclass(*args_, **kwargs_)
29        else:
30            return HTTPRequestResponseType(*args_, **kwargs_)
31    factory = staticmethod(factory)
32    def get_HTTP_Client_Request(self): return self.HTTP_Client_Request
33    def set_HTTP_Client_Request(self, HTTP_Client_Request): self.HTTP_Client_Request = HTTP_Client_Request
34    def get_HTTP_Provisional_Server_Response(self): return self.HTTP_Provisional_Server_Response
35    def set_HTTP_Provisional_Server_Response(self, HTTP_Provisional_Server_Response): self.HTTP_Provisional_Server_Response = HTTP_Provisional_Server_Response
36    def get_HTTP_Server_Response(self): return self.HTTP_Server_Response
37    def set_HTTP_Server_Response(self, HTTP_Server_Response): self.HTTP_Server_Response = HTTP_Server_Response
38    def get_ordinal_position(self): return self.ordinal_position
39    def set_ordinal_position(self, ordinal_position): self.ordinal_position = ordinal_position
40    def hasContent_(self):
41        if (
42            self.HTTP_Client_Request is not None or
43            self.HTTP_Provisional_Server_Response is not None or
44            self.HTTP_Server_Response is not None
45            ):
46            return True
47        else:
48            return False
49    def export(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPRequestResponseType', namespacedef_='', pretty_print=True):
50        if pretty_print:
51            eol_ = '\n'
52        else:
53            eol_ = ''
54        showIndent(lwrite, level, pretty_print)
55        lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
56        already_processed = set()
57        self.exportAttributes(lwrite, level, already_processed, namespace_, name_='HTTPRequestResponseType')
58        if self.hasContent_():
59            lwrite('>%s' % (eol_, ))
60            self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print)
61            showIndent(lwrite, level, pretty_print)
62            lwrite('</%s%s>%s' % (namespace_, name_, eol_))
63        else:
64            lwrite('/>%s' % (eol_, ))
65    def exportAttributes(self, lwrite, level, already_processed, namespace_='HTTPSessionObj:', name_='HTTPRequestResponseType'):
66        if self.ordinal_position is not None:
67
68            lwrite(' ordinal_position="%s"' % self.gds_format_integer(self.ordinal_position, input_name='ordinal_position'))
69    def exportChildren(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPRequestResponseType', fromsubclass_=False, pretty_print=True):
70        if pretty_print:
71            eol_ = '\n'
72        else:
73            eol_ = ''
74        if self.HTTP_Client_Request is not None:
75            self.HTTP_Client_Request.export(lwrite, level, 'HTTPSessionObj:', name_='HTTP_Client_Request', pretty_print=pretty_print)
76        if self.HTTP_Provisional_Server_Response is not None:
77            self.HTTP_Provisional_Server_Response.export(lwrite, level, 'HTTPSessionObj:', name_='HTTP_Provisional_Server_Response', pretty_print=pretty_print)
78        if self.HTTP_Server_Response is not None:
79            self.HTTP_Server_Response.export(lwrite, level, 'HTTPSessionObj:', name_='HTTP_Server_Response', pretty_print=pretty_print)
80    def build(self, node):
81        self.__sourcenode__ = node
82        already_processed = set()
83        self.buildAttributes(node, node.attrib, already_processed)
84        for child in node:
85            nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
86            self.buildChildren(child, node, nodeName_)
87    def buildAttributes(self, node, attrs, already_processed):
88        value = find_attr_value_('ordinal_position', node)
89        if value is not None:
90
91            try:
92                self.ordinal_position = int(value)
93            except ValueError as exp:
94                raise_parse_error(node, 'Bad integer attribute: %s' % exp)
95            if self.ordinal_position < 0:
96                raise_parse_error(node, 'Invalid NonNegativeInteger')
97    def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
98        if nodeName_ == 'HTTP_Client_Request':
99            obj_ = HTTPClientRequestType.factory()
100            obj_.build(child_)
101            self.set_HTTP_Client_Request(obj_)
102        elif nodeName_ == 'HTTP_Provisional_Server_Response':
103            obj_ = HTTPServerResponseType.factory()
104            obj_.build(child_)
105            self.set_HTTP_Provisional_Server_Response(obj_)
106        elif nodeName_ == 'HTTP_Server_Response':
107            obj_ = HTTPServerResponseType.factory()
108            obj_.build(child_)
109            self.set_HTTP_Server_Response(obj_)
110
111class HTTPClientRequestType(GeneratedsSuper):
112    """The HTTPClientRequestType field captures the details of an HTTP
113    client request."""
114
115    subclass = None
116    superclass = None
117    def __init__(self, HTTP_Request_Line=None, HTTP_Request_Header=None, HTTP_Message_Body=None):
118        self.HTTP_Request_Line = HTTP_Request_Line
119        self.HTTP_Request_Header = HTTP_Request_Header
120        self.HTTP_Message_Body = HTTP_Message_Body
121    def factory(*args_, **kwargs_):
122        if HTTPClientRequestType.subclass:
123            return HTTPClientRequestType.subclass(*args_, **kwargs_)
124        else:
125            return HTTPClientRequestType(*args_, **kwargs_)
126    factory = staticmethod(factory)
127    def get_HTTP_Request_Line(self): return self.HTTP_Request_Line
128    def set_HTTP_Request_Line(self, HTTP_Request_Line): self.HTTP_Request_Line = HTTP_Request_Line
129    def get_HTTP_Request_Header(self): return self.HTTP_Request_Header
130    def set_HTTP_Request_Header(self, HTTP_Request_Header): self.HTTP_Request_Header = HTTP_Request_Header
131    def get_HTTP_Message_Body(self): return self.HTTP_Message_Body
132    def set_HTTP_Message_Body(self, HTTP_Message_Body): self.HTTP_Message_Body = HTTP_Message_Body
133    def hasContent_(self):
134        if (
135            self.HTTP_Request_Line is not None or
136            self.HTTP_Request_Header is not None or
137            self.HTTP_Message_Body is not None
138            ):
139            return True
140        else:
141            return False
142    def export(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPClientRequestType', namespacedef_='', pretty_print=True):
143        if pretty_print:
144            eol_ = '\n'
145        else:
146            eol_ = ''
147        showIndent(lwrite, level, pretty_print)
148        lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
149        already_processed = set()
150        self.exportAttributes(lwrite, level, already_processed, namespace_, name_='HTTPClientRequestType')
151        if self.hasContent_():
152            lwrite('>%s' % (eol_, ))
153            self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print)
154            showIndent(lwrite, level, pretty_print)
155            lwrite('</%s%s>%s' % (namespace_, name_, eol_))
156        else:
157            lwrite('/>%s' % (eol_, ))
158    def exportAttributes(self, lwrite, level, already_processed, namespace_='HTTPSessionObj:', name_='HTTPClientRequestType'):
159        pass
160    def exportChildren(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPClientRequestType', fromsubclass_=False, pretty_print=True):
161        if pretty_print:
162            eol_ = '\n'
163        else:
164            eol_ = ''
165        if self.HTTP_Request_Line is not None:
166            self.HTTP_Request_Line.export(lwrite, level, 'HTTPSessionObj:', name_='HTTP_Request_Line', pretty_print=pretty_print)
167        if self.HTTP_Request_Header is not None:
168            self.HTTP_Request_Header.export(lwrite, level, 'HTTPSessionObj:', name_='HTTP_Request_Header', pretty_print=pretty_print)
169        if self.HTTP_Message_Body is not None:
170            self.HTTP_Message_Body.export(lwrite, level, 'HTTPSessionObj:', name_='HTTP_Message_Body', pretty_print=pretty_print)
171    def build(self, node):
172        self.__sourcenode__ = node
173        already_processed = set()
174        self.buildAttributes(node, node.attrib, already_processed)
175        for child in node:
176            nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
177            self.buildChildren(child, node, nodeName_)
178    def buildAttributes(self, node, attrs, already_processed):
179        pass
180    def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
181        if nodeName_ == 'HTTP_Request_Line':
182            obj_ = HTTPRequestLineType.factory()
183            obj_.build(child_)
184            self.set_HTTP_Request_Line(obj_)
185        elif nodeName_ == 'HTTP_Request_Header':
186            obj_ = HTTPRequestHeaderType.factory()
187            obj_.build(child_)
188            self.set_HTTP_Request_Header(obj_)
189        elif nodeName_ == 'HTTP_Message_Body':
190            obj_ = HTTPMessageType.factory()
191            obj_.build(child_)
192            self.set_HTTP_Message_Body(obj_)
193# end class HTTPClientRequestType
194
195class HTTPServerResponseType(GeneratedsSuper):
196    """The HTTPServerResponseType captures the details of an HTTP server
197    response."""
198
199    subclass = None
200    superclass = None
201    def __init__(self, HTTP_Status_Line=None, HTTP_Response_Header=None, HTTP_Message_Body=None):
202        self.HTTP_Status_Line = HTTP_Status_Line
203        self.HTTP_Response_Header = HTTP_Response_Header
204        self.HTTP_Message_Body = HTTP_Message_Body
205    def factory(*args_, **kwargs_):
206        if HTTPServerResponseType.subclass:
207            return HTTPServerResponseType.subclass(*args_, **kwargs_)
208        else:
209            return HTTPServerResponseType(*args_, **kwargs_)
210    factory = staticmethod(factory)
211    def get_HTTP_Status_Line(self): return self.HTTP_Status_Line
212    def set_HTTP_Status_Line(self, HTTP_Status_Line): self.HTTP_Status_Line = HTTP_Status_Line
213    def get_HTTP_Response_Header(self): return self.HTTP_Response_Header
214    def set_HTTP_Response_Header(self, HTTP_Response_Header): self.HTTP_Response_Header = HTTP_Response_Header
215    def get_HTTP_Message_Body(self): return self.HTTP_Message_Body
216    def set_HTTP_Message_Body(self, HTTP_Message_Body): self.HTTP_Message_Body = HTTP_Message_Body
217    def hasContent_(self):
218        if (
219            self.HTTP_Status_Line is not None or
220            self.HTTP_Response_Header is not None or
221            self.HTTP_Message_Body is not None
222            ):
223            return True
224        else:
225            return False
226    def export(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPServerResponseType', namespacedef_='', pretty_print=True):
227        if pretty_print:
228            eol_ = '\n'
229        else:
230            eol_ = ''
231        showIndent(lwrite, level, pretty_print)
232        lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
233        already_processed = set()
234        self.exportAttributes(lwrite, level, already_processed, namespace_, name_='HTTPServerResponseType')
235        if self.hasContent_():
236            lwrite('>%s' % (eol_, ))
237            self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print)
238            showIndent(lwrite, level, pretty_print)
239            lwrite('</%s%s>%s' % (namespace_, name_, eol_))
240        else:
241            lwrite('/>%s' % (eol_, ))
242    def exportAttributes(self, lwrite, level, already_processed, namespace_='HTTPSessionObj:', name_='HTTPServerResponseType'):
243        pass
244    def exportChildren(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPServerResponseType', fromsubclass_=False, pretty_print=True):
245        if pretty_print:
246            eol_ = '\n'
247        else:
248            eol_ = ''
249        if self.HTTP_Status_Line is not None:
250            self.HTTP_Status_Line.export(lwrite, level, 'HTTPSessionObj:', name_='HTTP_Status_Line', pretty_print=pretty_print)
251        if self.HTTP_Response_Header is not None:
252            self.HTTP_Response_Header.export(lwrite, level, 'HTTPSessionObj:', name_='HTTP_Response_Header', pretty_print=pretty_print)
253        if self.HTTP_Message_Body is not None:
254            self.HTTP_Message_Body.export(lwrite, level, 'HTTPSessionObj:', name_='HTTP_Message_Body', pretty_print=pretty_print)
255    def build(self, node):
256        self.__sourcenode__ = node
257        already_processed = set()
258        self.buildAttributes(node, node.attrib, already_processed)
259        for child in node:
260            nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
261            self.buildChildren(child, node, nodeName_)
262    def buildAttributes(self, node, attrs, already_processed):
263        pass
264    def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
265        if nodeName_ == 'HTTP_Status_Line':
266            obj_ = HTTPStatusLineType.factory()
267            obj_.build(child_)
268            self.set_HTTP_Status_Line(obj_)
269        elif nodeName_ == 'HTTP_Response_Header':
270            obj_ = HTTPResponseHeaderType.factory()
271            obj_.build(child_)
272            self.set_HTTP_Response_Header(obj_)
273        elif nodeName_ == 'HTTP_Message_Body':
274            obj_ = HTTPMessageType.factory()
275            obj_.build(child_)
276            self.set_HTTP_Message_Body(obj_)
277# end class HTTPServerResponseType
278
279class HTTPRequestLineType(GeneratedsSuper):
280    """The HTTPRequestLineType captures a single HTTP request line."""
281
282    subclass = None
283    superclass = None
284    def __init__(self, HTTP_Method=None, Value=None, Version=None):
285        self.HTTP_Method = HTTP_Method
286        self.Value = Value
287        self.Version = Version
288    def factory(*args_, **kwargs_):
289        if HTTPRequestLineType.subclass:
290            return HTTPRequestLineType.subclass(*args_, **kwargs_)
291        else:
292            return HTTPRequestLineType(*args_, **kwargs_)
293    factory = staticmethod(factory)
294    def get_HTTP_Method(self): return self.HTTP_Method
295    def set_HTTP_Method(self, HTTP_Method): self.HTTP_Method = HTTP_Method
296    def validate_HTTPMethodType(self, value):
297        # Validate type HTTPMethodType, a restriction on None.
298        pass
299    def get_Value(self): return self.Value
300    def set_Value(self, Value): self.Value = Value
301    def validate_StringObjectPropertyType(self, value):
302        # Validate type cybox_common.StringObjectPropertyType, a restriction on None.
303        pass
304    def get_Version(self): return self.Version
305    def set_Version(self, Version): self.Version = Version
306    def hasContent_(self):
307        if (
308            self.HTTP_Method is not None or
309            self.Value is not None or
310            self.Version is not None
311            ):
312            return True
313        else:
314            return False
315    def export(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPRequestLineType', namespacedef_='', pretty_print=True):
316        if pretty_print:
317            eol_ = '\n'
318        else:
319            eol_ = ''
320        showIndent(lwrite, level, pretty_print)
321        lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
322        already_processed = set()
323        self.exportAttributes(lwrite, level, already_processed, namespace_, name_='HTTPRequestLineType')
324        if self.hasContent_():
325            lwrite('>%s' % (eol_, ))
326            self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print)
327            showIndent(lwrite, level, pretty_print)
328            lwrite('</%s%s>%s' % (namespace_, name_, eol_))
329        else:
330            lwrite('/>%s' % (eol_, ))
331    def exportAttributes(self, lwrite, level, already_processed, namespace_='HTTPSessionObj:', name_='HTTPRequestLineType'):
332        pass
333    def exportChildren(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPRequestLineType', fromsubclass_=False, pretty_print=True):
334        if pretty_print:
335            eol_ = '\n'
336        else:
337            eol_ = ''
338        if self.HTTP_Method is not None:
339            # Temporary fix for forcing datatype output
340            #self.HTTP_Method.datatype = 'string'
341            self.HTTP_Method.export(lwrite, level, 'HTTPSessionObj:', name_='HTTP_Method', pretty_print=pretty_print)
342        if self.Value is not None:
343            self.Value.export(lwrite, level, 'HTTPSessionObj:', name_='Value', pretty_print=pretty_print)
344        if self.Version is not None:
345            self.Version.export(lwrite, level, 'HTTPSessionObj:', name_='Version', pretty_print=pretty_print)
346    def build(self, node):
347        self.__sourcenode__ = node
348        already_processed = set()
349        self.buildAttributes(node, node.attrib, already_processed)
350        for child in node:
351            nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
352            self.buildChildren(child, node, nodeName_)
353    def buildAttributes(self, node, attrs, already_processed):
354        pass
355    def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
356        if nodeName_ == 'HTTP_Method':
357            obj_ = HTTPMethodType.factory()
358            obj_.build(child_)
359            self.set_HTTP_Method(obj_)
360        elif nodeName_ == 'Value':
361            obj_ = cybox_common.StringObjectPropertyType.factory()
362            obj_.build(child_)
363            self.set_Value(obj_)
364        elif nodeName_ == 'Version':
365            obj_ = cybox_common.StringObjectPropertyType.factory()
366            obj_.build(child_)
367            self.set_Version(obj_)
368# end class HTTPRequestLineType
369
370class HTTPRequestHeaderType(GeneratedsSuper):
371    """The HTTPRequestHeaderType captures the raw or parsed header of an
372    HTTP request."""
373
374    subclass = None
375    superclass = None
376    def __init__(self, Raw_Header=None, Parsed_Header=None):
377        self.Raw_Header = Raw_Header
378        self.Parsed_Header = Parsed_Header
379    def factory(*args_, **kwargs_):
380        if HTTPRequestHeaderType.subclass:
381            return HTTPRequestHeaderType.subclass(*args_, **kwargs_)
382        else:
383            return HTTPRequestHeaderType(*args_, **kwargs_)
384    factory = staticmethod(factory)
385    def get_Raw_Header(self): return self.Raw_Header
386    def set_Raw_Header(self, Raw_Header): self.Raw_Header = Raw_Header
387    def validate_StringObjectPropertyType(self, value):
388        # Validate type cybox_common.StringObjectPropertyType, a restriction on None.
389        pass
390    def get_Parsed_Header(self): return self.Parsed_Header
391    def set_Parsed_Header(self, Parsed_Header): self.Parsed_Header = Parsed_Header
392    def hasContent_(self):
393        if (
394            self.Raw_Header is not None or
395            self.Parsed_Header is not None
396            ):
397            return True
398        else:
399            return False
400    def export(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPRequestHeaderType', namespacedef_='', pretty_print=True):
401        if pretty_print:
402            eol_ = '\n'
403        else:
404            eol_ = ''
405        showIndent(lwrite, level, pretty_print)
406        lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
407        already_processed = set()
408        self.exportAttributes(lwrite, level, already_processed, namespace_, name_='HTTPRequestHeaderType')
409        if self.hasContent_():
410            lwrite('>%s' % (eol_, ))
411            self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print)
412            showIndent(lwrite, level, pretty_print)
413            lwrite('</%s%s>%s' % (namespace_, name_, eol_))
414        else:
415            lwrite('/>%s' % (eol_, ))
416    def exportAttributes(self, lwrite, level, already_processed, namespace_='HTTPSessionObj:', name_='HTTPRequestHeaderType'):
417        pass
418    def exportChildren(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPRequestHeaderType', fromsubclass_=False, pretty_print=True):
419        if pretty_print:
420            eol_ = '\n'
421        else:
422            eol_ = ''
423        if self.Raw_Header is not None:
424            if self.Raw_Header.get_valueOf_() is not None:
425                value = self.Raw_Header.get_valueOf_()
426                if not value.startswith('<![CDATA['):
427                    value = '<![CDATA[' + value + ']]>'
428                    self.Raw_Header.set_valueOf_(value)
429            self.Raw_Header.export(lwrite, level, 'HTTPSessionObj:', name_='Raw_Header', pretty_print=pretty_print)
430        if self.Parsed_Header is not None:
431            self.Parsed_Header.export(lwrite, level, 'HTTPSessionObj:', name_='Parsed_Header', pretty_print=pretty_print)
432    def build(self, node):
433        self.__sourcenode__ = node
434        already_processed = set()
435        self.buildAttributes(node, node.attrib, already_processed)
436        for child in node:
437            nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
438            self.buildChildren(child, node, nodeName_)
439    def buildAttributes(self, node, attrs, already_processed):
440        pass
441    def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
442        if nodeName_ == 'Raw_Header':
443            obj_ = cybox_common.StringObjectPropertyType.factory()
444            obj_.build(child_)
445            self.set_Raw_Header(obj_)
446        elif nodeName_ == 'Parsed_Header':
447            obj_ = HTTPRequestHeaderFieldsType.factory()
448            obj_.build(child_)
449            self.set_Parsed_Header(obj_)
450# end class HTTPRequestHeaderType
451
452class HTTPRequestHeaderFieldsType(GeneratedsSuper):
453    """The HTTPRequestHeaderFieldsType captures parsed HTTP request header
454    fields."""
455
456    subclass = None
457    superclass = None
458    def __init__(self, Accept=None, Accept_Charset=None, Accept_Language=None, Accept_Datetime=None, Accept_Encoding=None, Authorization=None, Cache_Control=None, Connection=None, Cookie=None, Content_Length=None, Content_MD5=None, Content_Type=None, Date=None, Expect=None, From=None, Host=None, If_Match=None, If_Modified_Since=None, If_None_Match=None, If_Range=None, If_Unmodified_Since=None, Max_Forwards=None, Pragma=None, Proxy_Authorization=None, Range=None, Referer=None, TE=None, User_Agent=None, Via=None, Warning=None, DNT=None, X_Requested_With=None, X_Forwarded_For=None, X_Forwarded_Proto=None, X_ATT_DeviceId=None, X_Wap_Profile=None):
459        self.Accept = Accept
460        self.Accept_Charset = Accept_Charset
461        self.Accept_Language = Accept_Language
462        self.Accept_Datetime = Accept_Datetime
463        self.Accept_Encoding = Accept_Encoding
464        self.Authorization = Authorization
465        self.Cache_Control = Cache_Control
466        self.Connection = Connection
467        self.Cookie = Cookie
468        self.Content_Length = Content_Length
469        self.Content_MD5 = Content_MD5
470        self.Content_Type = Content_Type
471        self.Date = Date
472        self.Expect = Expect
473        self.From = From
474        self.Host = Host
475        self.If_Match = If_Match
476        self.If_Modified_Since = If_Modified_Since
477        self.If_None_Match = If_None_Match
478        self.If_Range = If_Range
479        self.If_Unmodified_Since = If_Unmodified_Since
480        self.Max_Forwards = Max_Forwards
481        self.Pragma = Pragma
482        self.Proxy_Authorization = Proxy_Authorization
483        self.Range = Range
484        self.Referer = Referer
485        self.TE = TE
486        self.User_Agent = User_Agent
487        self.Via = Via
488        self.Warning = Warning
489        self.DNT = DNT
490        self.X_Requested_With = X_Requested_With
491        self.X_Forwarded_For = X_Forwarded_For
492        self.X_Forwarded_Proto = X_Forwarded_Proto
493        self.X_ATT_DeviceId = X_ATT_DeviceId
494        self.X_Wap_Profile = X_Wap_Profile
495    def factory(*args_, **kwargs_):
496        if HTTPRequestHeaderFieldsType.subclass:
497            return HTTPRequestHeaderFieldsType.subclass(*args_, **kwargs_)
498        else:
499            return HTTPRequestHeaderFieldsType(*args_, **kwargs_)
500    factory = staticmethod(factory)
501    def get_Accept(self): return self.Accept
502    def set_Accept(self, Accept): self.Accept = Accept
503    def validate_StringObjectPropertyType(self, value):
504        # Validate type cybox_common.StringObjectPropertyType, a restriction on None.
505        pass
506    def get_Accept_Charset(self): return self.Accept_Charset
507    def set_Accept_Charset(self, Accept_Charset): self.Accept_Charset = Accept_Charset
508    def get_Accept_Language(self): return self.Accept_Language
509    def set_Accept_Language(self, Accept_Language): self.Accept_Language = Accept_Language
510    def get_Accept_Datetime(self): return self.Accept_Datetime
511    def set_Accept_Datetime(self, Accept_Datetime): self.Accept_Datetime = Accept_Datetime
512    def get_Accept_Encoding(self): return self.Accept_Encoding
513    def set_Accept_Encoding(self, Accept_Encoding): self.Accept_Encoding = Accept_Encoding
514    def get_Authorization(self): return self.Authorization
515    def set_Authorization(self, Authorization): self.Authorization = Authorization
516    def get_Cache_Control(self): return self.Cache_Control
517    def set_Cache_Control(self, Cache_Control): self.Cache_Control = Cache_Control
518    def get_Connection(self): return self.Connection
519    def set_Connection(self, Connection): self.Connection = Connection
520    def get_Cookie(self): return self.Cookie
521    def set_Cookie(self, Cookie): self.Cookie = Cookie
522    def get_Content_Length(self): return self.Content_Length
523    def set_Content_Length(self, Content_Length): self.Content_Length = Content_Length
524    def validate_IntegerObjectPropertyType(self, value):
525        # Validate type cybox_common.IntegerObjectPropertyType, a restriction on None.
526        pass
527    def get_Content_MD5(self): return self.Content_MD5
528    def set_Content_MD5(self, Content_MD5): self.Content_MD5 = Content_MD5
529    def get_Content_Type(self): return self.Content_Type
530    def set_Content_Type(self, Content_Type): self.Content_Type = Content_Type
531    def get_Date(self): return self.Date
532    def set_Date(self, Date): self.Date = Date
533    def validate_DateTimeObjectPropertyType(self, value):
534        # Validate type cybox_common.DateTimeObjectPropertyType, a restriction on None.
535        pass
536    def get_Expect(self): return self.Expect
537    def set_Expect(self, Expect): self.Expect = Expect
538    def get_From(self): return self.From
539    def set_From(self, From): self.From = From
540    def get_Host(self): return self.Host
541    def set_Host(self, Host): self.Host = Host
542    def get_If_Match(self): return self.If_Match
543    def set_If_Match(self, If_Match): self.If_Match = If_Match
544    def get_If_Modified_Since(self): return self.If_Modified_Since
545    def set_If_Modified_Since(self, If_Modified_Since): self.If_Modified_Since = If_Modified_Since
546    def get_If_None_Match(self): return self.If_None_Match
547    def set_If_None_Match(self, If_None_Match): self.If_None_Match = If_None_Match
548    def get_If_Range(self): return self.If_Range
549    def set_If_Range(self, If_Range): self.If_Range = If_Range
550    def get_If_Unmodified_Since(self): return self.If_Unmodified_Since
551    def set_If_Unmodified_Since(self, If_Unmodified_Since): self.If_Unmodified_Since = If_Unmodified_Since
552    def get_Max_Forwards(self): return self.Max_Forwards
553    def set_Max_Forwards(self, Max_Forwards): self.Max_Forwards = Max_Forwards
554    def get_Pragma(self): return self.Pragma
555    def set_Pragma(self, Pragma): self.Pragma = Pragma
556    def get_Proxy_Authorization(self): return self.Proxy_Authorization
557    def set_Proxy_Authorization(self, Proxy_Authorization): self.Proxy_Authorization = Proxy_Authorization
558    def get_Range(self): return self.Range
559    def set_Range(self, Range): self.Range = Range
560    def get_Referer(self): return self.Referer
561    def set_Referer(self, Referer): self.Referer = Referer
562    def get_TE(self): return self.TE
563    def set_TE(self, TE): self.TE = TE
564    def get_User_Agent(self): return self.User_Agent
565    def set_User_Agent(self, User_Agent): self.User_Agent = User_Agent
566    def get_Via(self): return self.Via
567    def set_Via(self, Via): self.Via = Via
568    def get_Warning(self): return self.Warning
569    def set_Warning(self, Warning): self.Warning = Warning
570    def get_DNT(self): return self.DNT
571    def set_DNT(self, DNT): self.DNT = DNT
572    def get_X_Requested_With(self): return self.X_Requested_With
573    def set_X_Requested_With(self, X_Requested_With): self.X_Requested_With = X_Requested_With
574    def get_X_Forwarded_For(self): return self.X_Forwarded_For
575    def set_X_Forwarded_For(self, X_Forwarded_For): self.X_Forwarded_For = X_Forwarded_For
576    def get_X_Forwarded_Proto(self): return self.X_Forwarded_Proto
577    def set_X_Forwarded_Proto(self, X_Forwarded_Proto): self.X_Forwarded_Proto = X_Forwarded_Proto
578    def get_X_ATT_DeviceId(self): return self.X_ATT_DeviceId
579    def set_X_ATT_DeviceId(self, X_ATT_DeviceId): self.X_ATT_DeviceId = X_ATT_DeviceId
580    def get_X_Wap_Profile(self): return self.X_Wap_Profile
581    def set_X_Wap_Profile(self, X_Wap_Profile): self.X_Wap_Profile = X_Wap_Profile
582    def hasContent_(self):
583        if (
584            self.Accept is not None or
585            self.Accept_Charset is not None or
586            self.Accept_Language is not None or
587            self.Accept_Datetime is not None or
588            self.Accept_Encoding is not None or
589            self.Authorization is not None or
590            self.Cache_Control is not None or
591            self.Connection is not None or
592            self.Cookie is not None or
593            self.Content_Length is not None or
594            self.Content_MD5 is not None or
595            self.Content_Type is not None or
596            self.Date is not None or
597            self.Expect is not None or
598            self.From is not None or
599            self.Host is not None or
600            self.If_Match is not None or
601            self.If_Modified_Since is not None or
602            self.If_None_Match is not None or
603            self.If_Range is not None or
604            self.If_Unmodified_Since is not None or
605            self.Max_Forwards is not None or
606            self.Pragma is not None or
607            self.Proxy_Authorization is not None or
608            self.Range is not None or
609            self.Referer is not None or
610            self.TE is not None or
611            self.User_Agent is not None or
612            self.Via is not None or
613            self.Warning is not None or
614            self.DNT is not None or
615            self.X_Requested_With is not None or
616            self.X_Forwarded_For is not None or
617            self.X_Forwarded_Proto is not None or
618            self.X_ATT_DeviceId is not None or
619            self.X_Wap_Profile is not None
620            ):
621            return True
622        else:
623            return False
624    def export(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPRequestHeaderFieldsType', namespacedef_='', pretty_print=True):
625        if pretty_print:
626            eol_ = '\n'
627        else:
628            eol_ = ''
629        showIndent(lwrite, level, pretty_print)
630        lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
631        already_processed = set()
632        self.exportAttributes(lwrite, level, already_processed, namespace_, name_='HTTPRequestHeaderFieldsType')
633        if self.hasContent_():
634            lwrite('>%s' % (eol_, ))
635            self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print)
636            showIndent(lwrite, level, pretty_print)
637            lwrite('</%s%s>%s' % (namespace_, name_, eol_))
638        else:
639            lwrite('/>%s' % (eol_, ))
640    def exportAttributes(self, lwrite, level, already_processed, namespace_='HTTPSessionObj:', name_='HTTPRequestHeaderFieldsType'):
641        pass
642    def exportChildren(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPRequestHeaderFieldsType', fromsubclass_=False, pretty_print=True):
643        if pretty_print:
644            eol_ = '\n'
645        else:
646            eol_ = ''
647        if self.Accept is not None:
648            self.Accept.export(lwrite, level, 'HTTPSessionObj:', name_='Accept', pretty_print=pretty_print)
649        if self.Accept_Charset is not None:
650            self.Accept_Charset.export(lwrite, level, 'HTTPSessionObj:', name_='Accept_Charset', pretty_print=pretty_print)
651        if self.Accept_Language is not None:
652            self.Accept_Language.export(lwrite, level, 'HTTPSessionObj:', name_='Accept_Language', pretty_print=pretty_print)
653        if self.Accept_Datetime is not None:
654            self.Accept_Datetime.export(lwrite, level, 'HTTPSessionObj:', name_='Accept_Datetime', pretty_print=pretty_print)
655        if self.Accept_Encoding is not None:
656            self.Accept_Encoding.export(lwrite, level, 'HTTPSessionObj:', name_='Accept_Encoding', pretty_print=pretty_print)
657        if self.Authorization is not None:
658            self.Authorization.export(lwrite, level, 'HTTPSessionObj:', name_='Authorization', pretty_print=pretty_print)
659        if self.Cache_Control is not None:
660            self.Cache_Control.export(lwrite, level, 'HTTPSessionObj:', name_='Cache_Control', pretty_print=pretty_print)
661        if self.Connection is not None:
662            self.Connection.export(lwrite, level, 'HTTPSessionObj:', name_='Connection', pretty_print=pretty_print)
663        if self.Cookie is not None:
664            self.Cookie.export(lwrite, level, 'HTTPSessionObj:', name_='Cookie', pretty_print=pretty_print)
665        if self.Content_Length is not None:
666            self.Content_Length.export(lwrite, level, 'HTTPSessionObj:', name_='Content_Length', pretty_print=pretty_print)
667        if self.Content_MD5 is not None:
668            self.Content_MD5.export(lwrite, level, 'HTTPSessionObj:', name_='Content_MD5', pretty_print=pretty_print)
669        if self.Content_Type is not None:
670            self.Content_Type.export(lwrite, level, 'HTTPSessionObj:', name_='Content_Type', pretty_print=pretty_print)
671        if self.Date is not None:
672            self.Date.export(lwrite, level, 'HTTPSessionObj:', name_='Date', pretty_print=pretty_print)
673        if self.Expect is not None:
674            self.Expect.export(lwrite, level, 'HTTPSessionObj:', name_='Expect', pretty_print=pretty_print)
675        if self.From is not None:
676            self.From.export(lwrite, level, 'HTTPSessionObj:', name_='From', pretty_print=pretty_print)
677        if self.Host is not None:
678            self.Host.export(lwrite, level, 'HTTPSessionObj:', name_='Host', pretty_print=pretty_print)
679        if self.If_Match is not None:
680            self.If_Match.export(lwrite, level, 'HTTPSessionObj:', name_='If_Match', pretty_print=pretty_print)
681        if self.If_Modified_Since is not None:
682            self.If_Modified_Since.export(lwrite, level, 'HTTPSessionObj:', name_='If_Modified_Since', pretty_print=pretty_print)
683        if self.If_None_Match is not None:
684            self.If_None_Match.export(lwrite, level, 'HTTPSessionObj:', name_='If_None_Match', pretty_print=pretty_print)
685        if self.If_Range is not None:
686            self.If_Range.export(lwrite, level, 'HTTPSessionObj:', name_='If_Range', pretty_print=pretty_print)
687        if self.If_Unmodified_Since is not None:
688            self.If_Unmodified_Since.export(lwrite, level, 'HTTPSessionObj:', name_='If_Unmodified_Since', pretty_print=pretty_print)
689        if self.Max_Forwards is not None:
690            self.Max_Forwards.export(lwrite, level, 'HTTPSessionObj:', name_='Max_Forwards', pretty_print=pretty_print)
691        if self.Pragma is not None:
692            self.Pragma.export(lwrite, level, 'HTTPSessionObj:', name_='Pragma', pretty_print=pretty_print)
693        if self.Proxy_Authorization is not None:
694            self.Proxy_Authorization.export(lwrite, level, 'HTTPSessionObj:', name_='Proxy_Authorization', pretty_print=pretty_print)
695        if self.Range is not None:
696            self.Range.export(lwrite, level, 'HTTPSessionObj:', name_='Range', pretty_print=pretty_print)
697        if self.Referer is not None:
698            self.Referer.export(lwrite, level, 'HTTPSessionObj:', name_='Referer', pretty_print=pretty_print)
699        if self.TE is not None:
700            self.TE.export(lwrite, level, 'HTTPSessionObj:', name_='TE', pretty_print=pretty_print)
701        if self.User_Agent is not None:
702            self.User_Agent.export(lwrite, level, 'HTTPSessionObj:', name_='User_Agent', pretty_print=pretty_print)
703        if self.Via is not None:
704            self.Via.export(lwrite, level, 'HTTPSessionObj:', name_='Via', pretty_print=pretty_print)
705        if self.Warning is not None:
706            self.Warning.export(lwrite, level, 'HTTPSessionObj:', name_='Warning', pretty_print=pretty_print)
707        if self.DNT is not None:
708            self.DNT.export(lwrite, level, 'HTTPSessionObj:', name_='DNT', pretty_print=pretty_print)
709        if self.X_Requested_With is not None:
710            self.X_Requested_With.export(lwrite, level, 'HTTPSessionObj:', name_='X_Requested_With', pretty_print=pretty_print)
711        if self.X_Forwarded_For is not None:
712            self.X_Forwarded_For.export(lwrite, level, 'HTTPSessionObj:', name_='X_Forwarded_For', pretty_print=pretty_print)
713        if self.X_Forwarded_Proto is not None:
714            self.X_Forwarded_Proto.export(lwrite, level, 'HTTPSessionObj:', name_='X_Forwarded_Proto', pretty_print=pretty_print)
715        if self.X_ATT_DeviceId is not None:
716            self.X_ATT_DeviceId.export(lwrite, level, 'HTTPSessionObj:', name_='X_ATT_DeviceId', pretty_print=pretty_print)
717        if self.X_Wap_Profile is not None:
718            self.X_Wap_Profile.export(lwrite, level, 'HTTPSessionObj:', name_='X_Wap_Profile', pretty_print=pretty_print)
719    def build(self, node):
720        self.__sourcenode__ = node
721        already_processed = set()
722        self.buildAttributes(node, node.attrib, already_processed)
723        for child in node:
724            nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
725            self.buildChildren(child, node, nodeName_)
726    def buildAttributes(self, node, attrs, already_processed):
727        pass
728    def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
729        if nodeName_ == 'Accept':
730            obj_ = cybox_common.StringObjectPropertyType.factory()
731            obj_.build(child_)
732            self.set_Accept(obj_)
733        elif nodeName_ == 'Accept_Charset':
734            obj_ = cybox_common.StringObjectPropertyType.factory()
735            obj_.build(child_)
736            self.set_Accept_Charset(obj_)
737        elif nodeName_ == 'Accept_Language':
738            obj_ = cybox_common.StringObjectPropertyType.factory()
739            obj_.build(child_)
740            self.set_Accept_Language(obj_)
741        elif nodeName_ == 'Accept_Datetime':
742            obj_ = cybox_common.StringObjectPropertyType.factory()
743            obj_.build(child_)
744            self.set_Accept_Datetime(obj_)
745        elif nodeName_ == 'Accept_Encoding':
746            obj_ = cybox_common.StringObjectPropertyType.factory()
747            obj_.build(child_)
748            self.set_Accept_Encoding(obj_)
749        elif nodeName_ == 'Authorization':
750            obj_ = cybox_common.StringObjectPropertyType.factory()
751            obj_.build(child_)
752            self.set_Authorization(obj_)
753        elif nodeName_ == 'Cache_Control':
754            obj_ = cybox_common.StringObjectPropertyType.factory()
755            obj_.build(child_)
756            self.set_Cache_Control(obj_)
757        elif nodeName_ == 'Connection':
758            obj_ = cybox_common.StringObjectPropertyType.factory()
759            obj_.build(child_)
760            self.set_Connection(obj_)
761        elif nodeName_ == 'Cookie':
762            obj_ = cybox_common.StringObjectPropertyType.factory()
763            obj_.build(child_)
764            self.set_Cookie(obj_)
765        elif nodeName_ == 'Content_Length':
766            obj_ = cybox_common.IntegerObjectPropertyType.factory()
767            obj_.build(child_)
768            self.set_Content_Length(obj_)
769        elif nodeName_ == 'Content_MD5':
770            obj_ = cybox_common.StringObjectPropertyType.factory()
771            obj_.build(child_)
772            self.set_Content_MD5(obj_)
773        elif nodeName_ == 'Content_Type':
774            obj_ = cybox_common.StringObjectPropertyType.factory()
775            obj_.build(child_)
776            self.set_Content_Type(obj_)
777        elif nodeName_ == 'Date':
778            obj_ = cybox_common.DateTimeObjectPropertyType.factory()
779            obj_.build(child_)
780            self.set_Date(obj_)
781        elif nodeName_ == 'Expect':
782            obj_ = cybox_common.StringObjectPropertyType.factory()
783            obj_.build(child_)
784            self.set_Expect(obj_)
785        elif nodeName_ == 'From':
786            obj_ = address_object.AddressObjectType.factory()
787            obj_.build(child_)
788            self.set_From(obj_)
789        elif nodeName_ == 'Host':
790            obj_ = HostFieldType.factory()
791            obj_.build(child_)
792            self.set_Host(obj_)
793        elif nodeName_ == 'If_Match':
794            obj_ = cybox_common.StringObjectPropertyType.factory()
795            obj_.build(child_)
796            self.set_If_Match(obj_)
797        elif nodeName_ == 'If_Modified_Since':
798            obj_ = cybox_common.DateTimeObjectPropertyType.factory()
799            obj_.build(child_)
800            self.set_If_Modified_Since(obj_)
801        elif nodeName_ == 'If_None_Match':
802            obj_ = cybox_common.StringObjectPropertyType.factory()
803            obj_.build(child_)
804            self.set_If_None_Match(obj_)
805        elif nodeName_ == 'If_Range':
806            obj_ = cybox_common.StringObjectPropertyType.factory()
807            obj_.build(child_)
808            self.set_If_Range(obj_)
809        elif nodeName_ == 'If_Unmodified_Since':
810            obj_ = cybox_common.DateTimeObjectPropertyType.factory()
811            obj_.build(child_)
812            self.set_If_Unmodified_Since(obj_)
813        elif nodeName_ == 'Max_Forwards':
814            obj_ = cybox_common.IntegerObjectPropertyType.factory()
815            obj_.build(child_)
816            self.set_Max_Forwards(obj_)
817        elif nodeName_ == 'Pragma':
818            obj_ = cybox_common.StringObjectPropertyType.factory()
819            obj_.build(child_)
820            self.set_Pragma(obj_)
821        elif nodeName_ == 'Proxy_Authorization':
822            obj_ = cybox_common.StringObjectPropertyType.factory()
823            obj_.build(child_)
824            self.set_Proxy_Authorization(obj_)
825        elif nodeName_ == 'Range':
826            obj_ = cybox_common.StringObjectPropertyType.factory()
827            obj_.build(child_)
828            self.set_Range(obj_)
829        elif nodeName_ == 'Referer':
830            obj_ = uri_object.URIObjectType.factory()
831            obj_.build(child_)
832            self.set_Referer(obj_)
833        elif nodeName_ == 'TE':
834            obj_ = cybox_common.StringObjectPropertyType.factory()
835            obj_.build(child_)
836            self.set_TE(obj_)
837        elif nodeName_ == 'User_Agent':
838            obj_ = cybox_common.StringObjectPropertyType.factory()
839            obj_.build(child_)
840            self.set_User_Agent(obj_)
841        elif nodeName_ == 'Via':
842            obj_ = cybox_common.StringObjectPropertyType.factory()
843            obj_.build(child_)
844            self.set_Via(obj_)
845        elif nodeName_ == 'Warning':
846            obj_ = cybox_common.StringObjectPropertyType.factory()
847            obj_.build(child_)
848            self.set_Warning(obj_)
849        elif nodeName_ == 'DNT':
850            obj_ = cybox_common.StringObjectPropertyType.factory()
851            obj_.build(child_)
852            self.set_DNT(obj_)
853        elif nodeName_ == 'X_Requested_With':
854            obj_ = cybox_common.StringObjectPropertyType.factory()
855            obj_.build(child_)
856            self.set_X_Requested_With(obj_)
857        elif nodeName_ == 'X_Forwarded_For':
858            obj_ = cybox_common.StringObjectPropertyType.factory()
859            obj_.build(child_)
860            self.set_X_Forwarded_For(obj_)
861        elif nodeName_ == 'X_Forwarded_Proto':
862            obj_ = cybox_common.StringObjectPropertyType.factory()
863            obj_.build(child_)
864            self.set_X_Forwarded_Proto(obj_)
865        elif nodeName_ == 'X_ATT_DeviceId':
866            obj_ = cybox_common.StringObjectPropertyType.factory()
867            obj_.build(child_)
868            self.set_X_ATT_DeviceId(obj_)
869        elif nodeName_ == 'X_Wap_Profile':
870            obj_ = uri_object.URIObjectType.factory()
871            obj_.build(child_)
872            self.set_X_Wap_Profile(obj_)
873# end class HTTPRequestHeaderFieldsType
874
875class HTTPResponseHeaderType(GeneratedsSuper):
876    """The HTTPResponseHeaderType captures the raw or parsed header of an
877    HTTP response."""
878
879    subclass = None
880    superclass = None
881    def __init__(self, Raw_Header=None, Parsed_Header=None):
882        self.Raw_Header = Raw_Header
883        self.Parsed_Header = Parsed_Header
884    def factory(*args_, **kwargs_):
885        if HTTPResponseHeaderType.subclass:
886            return HTTPResponseHeaderType.subclass(*args_, **kwargs_)
887        else:
888            return HTTPResponseHeaderType(*args_, **kwargs_)
889    factory = staticmethod(factory)
890    def get_Raw_Header(self): return self.Raw_Header
891    def set_Raw_Header(self, Raw_Header): self.Raw_Header = Raw_Header
892    def validate_StringObjectPropertyType(self, value):
893        # Validate type cybox_common.StringObjectPropertyType, a restriction on None.
894        pass
895    def get_Parsed_Header(self): return self.Parsed_Header
896    def set_Parsed_Header(self, Parsed_Header): self.Parsed_Header = Parsed_Header
897    def hasContent_(self):
898        if (
899            self.Raw_Header is not None or
900            self.Parsed_Header is not None
901            ):
902            return True
903        else:
904            return False
905    def export(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPResponseHeaderType', namespacedef_='', pretty_print=True):
906        if pretty_print:
907            eol_ = '\n'
908        else:
909            eol_ = ''
910        showIndent(lwrite, level, pretty_print)
911        lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
912        already_processed = set()
913        self.exportAttributes(lwrite, level, already_processed, namespace_, name_='HTTPResponseHeaderType')
914        if self.hasContent_():
915            lwrite('>%s' % (eol_, ))
916            self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print)
917            showIndent(lwrite, level, pretty_print)
918            lwrite('</%s%s>%s' % (namespace_, name_, eol_))
919        else:
920            lwrite('/>%s' % (eol_, ))
921    def exportAttributes(self, lwrite, level, already_processed, namespace_='HTTPSessionObj:', name_='HTTPResponseHeaderType'):
922        pass
923    def exportChildren(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPResponseHeaderType', fromsubclass_=False, pretty_print=True):
924        if pretty_print:
925            eol_ = '\n'
926        else:
927            eol_ = ''
928        if self.Raw_Header is not None:
929            if self.Raw_Header.get_valueOf_() is not None:
930                value = self.Raw_Header.get_valueOf_()
931                if not value.startswith('<![CDATA['):
932                    value = '<![CDATA[' + value + ']]>'
933                    self.Raw_Header.set_valueOf_(value)
934            self.Raw_Header.export(lwrite, level, 'HTTPSessionObj:', name_='Raw_Header', pretty_print=pretty_print)
935        if self.Parsed_Header is not None:
936            self.Parsed_Header.export(lwrite, level, 'HTTPSessionObj:', name_='Parsed_Header', pretty_print=pretty_print)
937    def build(self, node):
938        self.__sourcenode__ = node
939        already_processed = set()
940        self.buildAttributes(node, node.attrib, already_processed)
941        for child in node:
942            nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
943            self.buildChildren(child, node, nodeName_)
944    def buildAttributes(self, node, attrs, already_processed):
945        pass
946    def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
947        if nodeName_ == 'Raw_Header':
948            obj_ = cybox_common.StringObjectPropertyType.factory()
949            obj_.build(child_)
950            self.set_Raw_Header(obj_)
951        elif nodeName_ == 'Parsed_Header':
952            obj_ = HTTPResponseHeaderFieldsType.factory()
953            obj_.build(child_)
954            self.set_Parsed_Header(obj_)
955# end class HTTPResponseHeaderType
956
957class HTTPResponseHeaderFieldsType(GeneratedsSuper):
958    """The HTTPRequestHeaderFieldsType captures parsed HTTP request header
959    fields."""
960
961    subclass = None
962    superclass = None
963    def __init__(self, Access_Control_Allow_Origin=None, Accept_Ranges=None, Age=None, Cache_Control=None, Connection=None, Content_Encoding=None, Content_Language=None, Content_Length=None, Content_Location=None, Content_MD5=None, Content_Disposition=None, Content_Range=None, Content_Type=None, Date=None, ETag=None, Expires=None, Last_Modified=None, Link=None, Location=None, P3P=None, Pragma=None, Proxy_Authenticate=None, Refresh=None, Retry_After=None, Server=None, Set_Cookie=None, Strict_Transport_Security=None, Trailer=None, Transfer_Encoding=None, Vary=None, Via=None, Warning=None, WWW_Authenticate=None, X_Frame_Options=None, X_XSS_Protection=None, X_Content_Type_Options=None, X_Powered_By=None, X_UA_Compatible=None):
964        self.Access_Control_Allow_Origin = Access_Control_Allow_Origin
965        self.Accept_Ranges = Accept_Ranges
966        self.Age = Age
967        self.Cache_Control = Cache_Control
968        self.Connection = Connection
969        self.Content_Encoding = Content_Encoding
970        self.Content_Language = Content_Language
971        self.Content_Length = Content_Length
972        self.Content_Location = Content_Location
973        self.Content_MD5 = Content_MD5
974        self.Content_Disposition = Content_Disposition
975        self.Content_Range = Content_Range
976        self.Content_Type = Content_Type
977        self.Date = Date
978        self.ETag = ETag
979        self.Expires = Expires
980        self.Last_Modified = Last_Modified
981        self.Link = Link
982        self.Location = Location
983        self.P3P = P3P
984        self.Pragma = Pragma
985        self.Proxy_Authenticate = Proxy_Authenticate
986        self.Refresh = Refresh
987        self.Retry_After = Retry_After
988        self.Server = Server
989        self.Set_Cookie = Set_Cookie
990        self.Strict_Transport_Security = Strict_Transport_Security
991        self.Trailer = Trailer
992        self.Transfer_Encoding = Transfer_Encoding
993        self.Vary = Vary
994        self.Via = Via
995        self.Warning = Warning
996        self.WWW_Authenticate = WWW_Authenticate
997        self.X_Frame_Options = X_Frame_Options
998        self.X_XSS_Protection = X_XSS_Protection
999        self.X_Content_Type_Options = X_Content_Type_Options
1000        self.X_Powered_By = X_Powered_By
1001        self.X_UA_Compatible = X_UA_Compatible
1002    def factory(*args_, **kwargs_):
1003        if HTTPResponseHeaderFieldsType.subclass:
1004            return HTTPResponseHeaderFieldsType.subclass(*args_, **kwargs_)
1005        else:
1006            return HTTPResponseHeaderFieldsType(*args_, **kwargs_)
1007    factory = staticmethod(factory)
1008    def get_Access_Control_Allow_Origin(self): return self.Access_Control_Allow_Origin
1009    def set_Access_Control_Allow_Origin(self, Access_Control_Allow_Origin): self.Access_Control_Allow_Origin = Access_Control_Allow_Origin
1010    def validate_StringObjectPropertyType(self, value):
1011        # Validate type cybox_common.StringObjectPropertyType, a restriction on None.
1012        pass
1013    def get_Accept_Ranges(self): return self.Accept_Ranges
1014    def set_Accept_Ranges(self, Accept_Ranges): self.Accept_Ranges = Accept_Ranges
1015    def get_Age(self): return self.Age
1016    def set_Age(self, Age): self.Age = Age
1017    def validate_IntegerObjectPropertyType(self, value):
1018        # Validate type cybox_common.IntegerObjectPropertyType, a restriction on None.
1019        pass
1020    def get_Cache_Control(self): return self.Cache_Control
1021    def set_Cache_Control(self, Cache_Control): self.Cache_Control = Cache_Control
1022    def get_Connection(self): return self.Connection
1023    def set_Connection(self, Connection): self.Connection = Connection
1024    def get_Content_Encoding(self): return self.Content_Encoding
1025    def set_Content_Encoding(self, Content_Encoding): self.Content_Encoding = Content_Encoding
1026    def get_Content_Language(self): return self.Content_Language
1027    def set_Content_Language(self, Content_Language): self.Content_Language = Content_Language
1028    def get_Content_Length(self): return self.Content_Length
1029    def set_Content_Length(self, Content_Length): self.Content_Length = Content_Length
1030    def get_Content_Location(self): return self.Content_Location
1031    def set_Content_Location(self, Content_Location): self.Content_Location = Content_Location
1032    def get_Content_MD5(self): return self.Content_MD5
1033    def set_Content_MD5(self, Content_MD5): self.Content_MD5 = Content_MD5
1034    def get_Content_Disposition(self): return self.Content_Disposition
1035    def set_Content_Disposition(self, Content_Disposition): self.Content_Disposition = Content_Disposition
1036    def get_Content_Range(self): return self.Content_Range
1037    def set_Content_Range(self, Content_Range): self.Content_Range = Content_Range
1038    def get_Content_Type(self): return self.Content_Type
1039    def set_Content_Type(self, Content_Type): self.Content_Type = Content_Type
1040    def get_Date(self): return self.Date
1041    def set_Date(self, Date): self.Date = Date
1042    def validate_DateTimeObjectPropertyType(self, value):
1043        # Validate type cybox_common.DateTimeObjectPropertyType, a restriction on None.
1044        pass
1045    def get_ETag(self): return self.ETag
1046    def set_ETag(self, ETag): self.ETag = ETag
1047    def get_Expires(self): return self.Expires
1048    def set_Expires(self, Expires): self.Expires = Expires
1049    def get_Last_Modified(self): return self.Last_Modified
1050    def set_Last_Modified(self, Last_Modified): self.Last_Modified = Last_Modified
1051    def get_Link(self): return self.Link
1052    def set_Link(self, Link): self.Link = Link
1053    def get_Location(self): return self.Location
1054    def set_Location(self, Location): self.Location = Location
1055    def get_P3P(self): return self.P3P
1056    def set_P3P(self, P3P): self.P3P = P3P
1057    def get_Pragma(self): return self.Pragma
1058    def set_Pragma(self, Pragma): self.Pragma = Pragma
1059    def get_Proxy_Authenticate(self): return self.Proxy_Authenticate
1060    def set_Proxy_Authenticate(self, Proxy_Authenticate): self.Proxy_Authenticate = Proxy_Authenticate
1061    def get_Refresh(self): return self.Refresh
1062    def set_Refresh(self, Refresh): self.Refresh = Refresh
1063    def get_Retry_After(self): return self.Retry_After
1064    def set_Retry_After(self, Retry_After): self.Retry_After = Retry_After
1065    def get_Server(self): return self.Server
1066    def set_Server(self, Server): self.Server = Server
1067    def get_Set_Cookie(self): return self.Set_Cookie
1068    def set_Set_Cookie(self, Set_Cookie): self.Set_Cookie = Set_Cookie
1069    def get_Strict_Transport_Security(self): return self.Strict_Transport_Security
1070    def set_Strict_Transport_Security(self, Strict_Transport_Security): self.Strict_Transport_Security = Strict_Transport_Security
1071    def get_Trailer(self): return self.Trailer
1072    def set_Trailer(self, Trailer): self.Trailer = Trailer
1073    def get_Transfer_Encoding(self): return self.Transfer_Encoding
1074    def set_Transfer_Encoding(self, Transfer_Encoding): self.Transfer_Encoding = Transfer_Encoding
1075    def get_Vary(self): return self.Vary
1076    def set_Vary(self, Vary): self.Vary = Vary
1077    def get_Via(self): return self.Via
1078    def set_Via(self, Via): self.Via = Via
1079    def get_Warning(self): return self.Warning
1080    def set_Warning(self, Warning): self.Warning = Warning
1081    def get_WWW_Authenticate(self): return self.WWW_Authenticate
1082    def set_WWW_Authenticate(self, WWW_Authenticate): self.WWW_Authenticate = WWW_Authenticate
1083    def get_X_Frame_Options(self): return self.X_Frame_Options
1084    def set_X_Frame_Options(self, X_Frame_Options): self.X_Frame_Options = X_Frame_Options
1085    def get_X_XSS_Protection(self): return self.X_XSS_Protection
1086    def set_X_XSS_Protection(self, X_XSS_Protection): self.X_XSS_Protection = X_XSS_Protection
1087    def get_X_Content_Type_Options(self): return self.X_Content_Type_Options
1088    def set_X_Content_Type_Options(self, X_Content_Type_Options): self.X_Content_Type_Options = X_Content_Type_Options
1089    def get_X_Powered_By(self): return self.X_Powered_By
1090    def set_X_Powered_By(self, X_Powered_By): self.X_Powered_By = X_Powered_By
1091    def get_X_UA_Compatible(self): return self.X_UA_Compatible
1092    def set_X_UA_Compatible(self, X_UA_Compatible): self.X_UA_Compatible = X_UA_Compatible
1093    def hasContent_(self):
1094        if (
1095            self.Access_Control_Allow_Origin is not None or
1096            self.Accept_Ranges is not None or
1097            self.Age is not None or
1098            self.Cache_Control is not None or
1099            self.Connection is not None or
1100            self.Content_Encoding is not None or
1101            self.Content_Language is not None or
1102            self.Content_Length is not None or
1103            self.Content_Location is not None or
1104            self.Content_MD5 is not None or
1105            self.Content_Disposition is not None or
1106            self.Content_Range is not None or
1107            self.Content_Type is not None or
1108            self.Date is not None or
1109            self.ETag is not None or
1110            self.Expires is not None or
1111            self.Last_Modified is not None or
1112            self.Link is not None or
1113            self.Location is not None or
1114            self.P3P is not None or
1115            self.Pragma is not None or
1116            self.Proxy_Authenticate is not None or
1117            self.Refresh is not None or
1118            self.Retry_After is not None or
1119            self.Server is not None or
1120            self.Set_Cookie is not None or
1121            self.Strict_Transport_Security is not None or
1122            self.Trailer is not None or
1123            self.Transfer_Encoding is not None or
1124            self.Vary is not None or
1125            self.Via is not None or
1126            self.Warning is not None or
1127            self.WWW_Authenticate is not None or
1128            self.X_Frame_Options is not None or
1129            self.X_XSS_Protection is not None or
1130            self.X_Content_Type_Options is not None or
1131            self.X_Powered_By is not None or
1132            self.X_UA_Compatible is not None
1133            ):
1134            return True
1135        else:
1136            return False
1137    def export(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPResponseHeaderFieldsType', namespacedef_='', pretty_print=True):
1138        if pretty_print:
1139            eol_ = '\n'
1140        else:
1141            eol_ = ''
1142        showIndent(lwrite, level, pretty_print)
1143        lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1144        already_processed = set()
1145        self.exportAttributes(lwrite, level, already_processed, namespace_, name_='HTTPResponseHeaderFieldsType')
1146        if self.hasContent_():
1147            lwrite('>%s' % (eol_, ))
1148            self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print)
1149            showIndent(lwrite, level, pretty_print)
1150            lwrite('</%s%s>%s' % (namespace_, name_, eol_))
1151        else:
1152            lwrite('/>%s' % (eol_, ))
1153    def exportAttributes(self, lwrite, level, already_processed, namespace_='HTTPSessionObj:', name_='HTTPResponseHeaderFieldsType'):
1154        pass
1155    def exportChildren(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPResponseHeaderFieldsType', fromsubclass_=False, pretty_print=True):
1156        if pretty_print:
1157            eol_ = '\n'
1158        else:
1159            eol_ = ''
1160        if self.Access_Control_Allow_Origin is not None:
1161            self.Access_Control_Allow_Origin.export(lwrite, level, 'HTTPSessionObj:', name_='Access_Control_Allow_Origin', pretty_print=pretty_print)
1162        if self.Accept_Ranges is not None:
1163            self.Accept_Ranges.export(lwrite, level, 'HTTPSessionObj:', name_='Accept_Ranges', pretty_print=pretty_print)
1164        if self.Age is not None:
1165            self.Age.export(lwrite, level, 'HTTPSessionObj:', name_='Age', pretty_print=pretty_print)
1166        if self.Cache_Control is not None:
1167            self.Cache_Control.export(lwrite, level, 'HTTPSessionObj:', name_='Cache_Control', pretty_print=pretty_print)
1168        if self.Connection is not None:
1169            self.Connection.export(lwrite, level, 'HTTPSessionObj:', name_='Connection', pretty_print=pretty_print)
1170        if self.Content_Encoding is not None:
1171            self.Content_Encoding.export(lwrite, level, 'HTTPSessionObj:', name_='Content_Encoding', pretty_print=pretty_print)
1172        if self.Content_Language is not None:
1173            self.Content_Language.export(lwrite, level, 'HTTPSessionObj:', name_='Content_Language', pretty_print=pretty_print)
1174        if self.Content_Length is not None:
1175            self.Content_Length.export(lwrite, level, 'HTTPSessionObj:', name_='Content_Length', pretty_print=pretty_print)
1176        if self.Content_Location is not None:
1177            self.Content_Location.export(lwrite, level, 'HTTPSessionObj:', name_='Content_Location', pretty_print=pretty_print)
1178        if self.Content_MD5 is not None:
1179            self.Content_MD5.export(lwrite, level, 'HTTPSessionObj:', name_='Content_MD5', pretty_print=pretty_print)
1180        if self.Content_Disposition is not None:
1181            self.Content_Disposition.export(lwrite, level, 'HTTPSessionObj:', name_='Content_Disposition', pretty_print=pretty_print)
1182        if self.Content_Range is not None:
1183            self.Content_Range.export(lwrite, level, 'HTTPSessionObj:', name_='Content_Range', pretty_print=pretty_print)
1184        if self.Content_Type is not None:
1185            self.Content_Type.export(lwrite, level, 'HTTPSessionObj:', name_='Content_Type', pretty_print=pretty_print)
1186        if self.Date is not None:
1187            self.Date.export(lwrite, level, 'HTTPSessionObj:', name_='Date', pretty_print=pretty_print)
1188        if self.ETag is not None:
1189            self.ETag.export(lwrite, level, 'HTTPSessionObj:', name_='ETag', pretty_print=pretty_print)
1190        if self.Expires is not None:
1191            self.Expires.export(lwrite, level, 'HTTPSessionObj:', name_='Expires', pretty_print=pretty_print)
1192        if self.Last_Modified is not None:
1193            self.Last_Modified.export(lwrite, level, 'HTTPSessionObj:', name_='Last_Modified', pretty_print=pretty_print)
1194        if self.Link is not None:
1195            self.Link.export(lwrite, level, 'HTTPSessionObj:', name_='Link', pretty_print=pretty_print)
1196        if self.Location is not None:
1197            self.Location.export(lwrite, level, 'HTTPSessionObj:', name_='Location', pretty_print=pretty_print)
1198        if self.P3P is not None:
1199            self.P3P.export(lwrite, level, 'HTTPSessionObj:', name_='P3P', pretty_print=pretty_print)
1200        if self.Pragma is not None:
1201            self.Pragma.export(lwrite, level, 'HTTPSessionObj:', name_='Pragma', pretty_print=pretty_print)
1202        if self.Proxy_Authenticate is not None:
1203            self.Proxy_Authenticate.export(lwrite, level, 'HTTPSessionObj:', name_='Proxy_Authenticate', pretty_print=pretty_print)
1204        if self.Refresh is not None:
1205            self.Refresh.export(lwrite, level, 'HTTPSessionObj:', name_='Refresh', pretty_print=pretty_print)
1206        if self.Retry_After is not None:
1207            self.Retry_After.export(lwrite, level, 'HTTPSessionObj:', name_='Retry_After', pretty_print=pretty_print)
1208        if self.Server is not None:
1209            self.Server.export(lwrite, level, 'HTTPSessionObj:', name_='Server', pretty_print=pretty_print)
1210        if self.Set_Cookie is not None:
1211            self.Set_Cookie.export(lwrite, level, 'HTTPSessionObj:', name_='Set_Cookie', pretty_print=pretty_print)
1212        if self.Strict_Transport_Security is not None:
1213            self.Strict_Transport_Security.export(lwrite, level, 'HTTPSessionObj:', name_='Strict_Transport_Security', pretty_print=pretty_print)
1214        if self.Trailer is not None:
1215            self.Trailer.export(lwrite, level, 'HTTPSessionObj:', name_='Trailer', pretty_print=pretty_print)
1216        if self.Transfer_Encoding is not None:
1217            self.Transfer_Encoding.export(lwrite, level, 'HTTPSessionObj:', name_='Transfer_Encoding', pretty_print=pretty_print)
1218        if self.Vary is not None:
1219            self.Vary.export(lwrite, level, 'HTTPSessionObj:', name_='Vary', pretty_print=pretty_print)
1220        if self.Via is not None:
1221            self.Via.export(lwrite, level, 'HTTPSessionObj:', name_='Via', pretty_print=pretty_print)
1222        if self.Warning is not None:
1223            self.Warning.export(lwrite, level, 'HTTPSessionObj:', name_='Warning', pretty_print=pretty_print)
1224        if self.WWW_Authenticate is not None:
1225            self.WWW_Authenticate.export(lwrite, level, 'HTTPSessionObj:', name_='WWW_Authenticate', pretty_print=pretty_print)
1226        if self.X_Frame_Options is not None:
1227            self.X_Frame_Options.export(lwrite, level, 'HTTPSessionObj:', name_='X_Frame_Options', pretty_print=pretty_print)
1228        if self.X_XSS_Protection is not None:
1229            self.X_XSS_Protection.export(lwrite, level, 'HTTPSessionObj:', name_='X_XSS_Protection', pretty_print=pretty_print)
1230        if self.X_Content_Type_Options is not None:
1231            self.X_Content_Type_Options.export(lwrite, level, 'HTTPSessionObj:', name_='X_Content_Type_Options', pretty_print=pretty_print)
1232        if self.X_Powered_By is not None:
1233            self.X_Powered_By.export(lwrite, level, 'HTTPSessionObj:', name_='X_Powered_By', pretty_print=pretty_print)
1234        if self.X_UA_Compatible is not None:
1235            self.X_UA_Compatible.export(lwrite, level, 'HTTPSessionObj:', name_='X_UA_Compatible', pretty_print=pretty_print)
1236    def build(self, node):
1237        self.__sourcenode__ = node
1238        already_processed = set()
1239        self.buildAttributes(node, node.attrib, already_processed)
1240        for child in node:
1241            nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1242            self.buildChildren(child, node, nodeName_)
1243    def buildAttributes(self, node, attrs, already_processed):
1244        pass
1245    def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
1246        if nodeName_ == 'Access_Control_Allow_Origin':
1247            obj_ = cybox_common.StringObjectPropertyType.factory()
1248            obj_.build(child_)
1249            self.set_Access_Control_Allow_Origin(obj_)
1250        elif nodeName_ == 'Accept_Ranges':
1251            obj_ = cybox_common.StringObjectPropertyType.factory()
1252            obj_.build(child_)
1253            self.set_Accept_Ranges(obj_)
1254        elif nodeName_ == 'Age':
1255            obj_ = cybox_common.IntegerObjectPropertyType.factory()
1256            obj_.build(child_)
1257            self.set_Age(obj_)
1258        elif nodeName_ == 'Cache_Control':
1259            obj_ = cybox_common.StringObjectPropertyType.factory()
1260            obj_.build(child_)
1261            self.set_Cache_Control(obj_)
1262        elif nodeName_ == 'Connection':
1263            obj_ = cybox_common.StringObjectPropertyType.factory()
1264            obj_.build(child_)
1265            self.set_Connection(obj_)
1266        elif nodeName_ == 'Content_Encoding':
1267            obj_ = cybox_common.StringObjectPropertyType.factory()
1268            obj_.build(child_)
1269            self.set_Content_Encoding(obj_)
1270        elif nodeName_ == 'Content_Language':
1271            obj_ = cybox_common.StringObjectPropertyType.factory()
1272            obj_.build(child_)
1273            self.set_Content_Language(obj_)
1274        elif nodeName_ == 'Content_Length':
1275            obj_ = cybox_common.IntegerObjectPropertyType.factory()
1276            obj_.build(child_)
1277            self.set_Content_Length(obj_)
1278        elif nodeName_ == 'Content_Location':
1279            obj_ = cybox_common.StringObjectPropertyType.factory()
1280            obj_.build(child_)
1281            self.set_Content_Location(obj_)
1282        elif nodeName_ == 'Content_MD5':
1283            obj_ = cybox_common.StringObjectPropertyType.factory()
1284            obj_.build(child_)
1285            self.set_Content_MD5(obj_)
1286        elif nodeName_ == 'Content_Disposition':
1287            obj_ = cybox_common.StringObjectPropertyType.factory()
1288            obj_.build(child_)
1289            self.set_Content_Disposition(obj_)
1290        elif nodeName_ == 'Content_Range':
1291            obj_ = cybox_common.StringObjectPropertyType.factory()
1292            obj_.build(child_)
1293            self.set_Content_Range(obj_)
1294        elif nodeName_ == 'Content_Type':
1295            obj_ = cybox_common.StringObjectPropertyType.factory()
1296            obj_.build(child_)
1297            self.set_Content_Type(obj_)
1298        elif nodeName_ == 'Date':
1299            obj_ = cybox_common.DateTimeObjectPropertyType.factory()
1300            obj_.build(child_)
1301            self.set_Date(obj_)
1302        elif nodeName_ == 'ETag':
1303            obj_ = cybox_common.StringObjectPropertyType.factory()
1304            obj_.build(child_)
1305            self.set_ETag(obj_)
1306        elif nodeName_ == 'Expires':
1307            obj_ = cybox_common.DateTimeObjectPropertyType.factory()
1308            obj_.build(child_)
1309            self.set_Expires(obj_)
1310        elif nodeName_ == 'Last_Modified':
1311            obj_ = cybox_common.DateTimeObjectPropertyType.factory()
1312            obj_.build(child_)
1313            self.set_Last_Modified(obj_)
1314        elif nodeName_ == 'Link':
1315            obj_ = cybox_common.StringObjectPropertyType.factory()
1316            obj_.build(child_)
1317            self.set_Link(obj_)
1318        elif nodeName_ == 'Location':
1319            obj_ = uri_object.URIObjectType.factory()
1320            obj_.build(child_)
1321            self.set_Location(obj_)
1322        elif nodeName_ == 'P3P':
1323            obj_ = cybox_common.StringObjectPropertyType.factory()
1324            obj_.build(child_)
1325            self.set_P3P(obj_)
1326        elif nodeName_ == 'Pragma':
1327            obj_ = cybox_common.StringObjectPropertyType.factory()
1328            obj_.build(child_)
1329            self.set_Pragma(obj_)
1330        elif nodeName_ == 'Proxy_Authenticate':
1331            obj_ = cybox_common.StringObjectPropertyType.factory()
1332            obj_.build(child_)
1333            self.set_Proxy_Authenticate(obj_)
1334        elif nodeName_ == 'Refresh':
1335            obj_ = cybox_common.StringObjectPropertyType.factory()
1336            obj_.build(child_)
1337            self.set_Refresh(obj_)
1338        elif nodeName_ == 'Retry_After':
1339            obj_ = cybox_common.IntegerObjectPropertyType.factory()
1340            obj_.build(child_)
1341            self.set_Retry_After(obj_)
1342        elif nodeName_ == 'Server':
1343            obj_ = cybox_common.StringObjectPropertyType.factory()
1344            obj_.build(child_)
1345            self.set_Server(obj_)
1346        elif nodeName_ == 'Set_Cookie':
1347            obj_ = cybox_common.StringObjectPropertyType.factory()
1348            obj_.build(child_)
1349            self.set_Set_Cookie(obj_)
1350        elif nodeName_ == 'Strict_Transport_Security':
1351            obj_ = cybox_common.StringObjectPropertyType.factory()
1352            obj_.build(child_)
1353            self.set_Strict_Transport_Security(obj_)
1354        elif nodeName_ == 'Trailer':
1355            obj_ = cybox_common.StringObjectPropertyType.factory()
1356            obj_.build(child_)
1357            self.set_Trailer(obj_)
1358        elif nodeName_ == 'Transfer_Encoding':
1359            obj_ = cybox_common.StringObjectPropertyType.factory()
1360            obj_.build(child_)
1361            self.set_Transfer_Encoding(obj_)
1362        elif nodeName_ == 'Vary':
1363            obj_ = cybox_common.StringObjectPropertyType.factory()
1364            obj_.build(child_)
1365            self.set_Vary(obj_)
1366        elif nodeName_ == 'Via':
1367            obj_ = cybox_common.StringObjectPropertyType.factory()
1368            obj_.build(child_)
1369            self.set_Via(obj_)
1370        elif nodeName_ == 'Warning':
1371            obj_ = cybox_common.StringObjectPropertyType.factory()
1372            obj_.build(child_)
1373            self.set_Warning(obj_)
1374        elif nodeName_ == 'WWW_Authenticate':
1375            obj_ = cybox_common.StringObjectPropertyType.factory()
1376            obj_.build(child_)
1377            self.set_WWW_Authenticate(obj_)
1378        elif nodeName_ == 'X_Frame_Options':
1379            obj_ = cybox_common.StringObjectPropertyType.factory()
1380            obj_.build(child_)
1381            self.set_X_Frame_Options(obj_)
1382        elif nodeName_ == 'X_XSS_Protection':
1383            obj_ = cybox_common.StringObjectPropertyType.factory()
1384            obj_.build(child_)
1385            self.set_X_XSS_Protection(obj_)
1386        elif nodeName_ == 'X_Content_Type_Options':
1387            obj_ = cybox_common.StringObjectPropertyType.factory()
1388            obj_.build(child_)
1389            self.set_X_Content_Type_Options(obj_)
1390        elif nodeName_ == 'X_Powered_By':
1391            obj_ = cybox_common.StringObjectPropertyType.factory()
1392            obj_.build(child_)
1393            self.set_X_Powered_By(obj_)
1394        elif nodeName_ == 'X_UA_Compatible':
1395            obj_ = cybox_common.StringObjectPropertyType.factory()
1396            obj_.build(child_)
1397            self.set_X_UA_Compatible(obj_)
1398# end class HTTPResponseHeaderFieldsType
1399
1400class HTTPMessageType(GeneratedsSuper):
1401    """The HTTPMessageType captures a single HTTP message body and its
1402    length."""
1403
1404    subclass = None
1405    superclass = None
1406    def __init__(self, Length=None, Message_Body=None):
1407        self.Length = Length
1408        self.Message_Body = Message_Body
1409    def factory(*args_, **kwargs_):
1410        if HTTPMessageType.subclass:
1411            return HTTPMessageType.subclass(*args_, **kwargs_)
1412        else:
1413            return HTTPMessageType(*args_, **kwargs_)
1414    factory = staticmethod(factory)
1415    def get_Length(self): return self.Length
1416    def set_Length(self, Length): self.Length = Length
1417    def validate_PositiveIntegerObjectPropertyType(self, value):
1418        # Validate type cybox_common.PositiveIntegerObjectPropertyType, a restriction on None.
1419        pass
1420    def get_Message_Body(self): return self.Message_Body
1421    def set_Message_Body(self, Message_Body): self.Message_Body = Message_Body
1422    def validate_StringObjectPropertyType(self, value):
1423        # Validate type cybox_common.StringObjectPropertyType, a restriction on None.
1424        pass
1425    def hasContent_(self):
1426        if (
1427            self.Length is not None or
1428            self.Message_Body is not None
1429            ):
1430            return True
1431        else:
1432            return False
1433    def export(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPMessageType', namespacedef_='', pretty_print=True):
1434        if pretty_print:
1435            eol_ = '\n'
1436        else:
1437            eol_ = ''
1438        showIndent(lwrite, level, pretty_print)
1439        lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1440        already_processed = set()
1441        self.exportAttributes(lwrite, level, already_processed, namespace_, name_='HTTPMessageType')
1442        if self.hasContent_():
1443            lwrite('>%s' % (eol_, ))
1444            self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print)
1445            showIndent(lwrite, level, pretty_print)
1446            lwrite('</%s%s>%s' % (namespace_, name_, eol_))
1447        else:
1448            lwrite('/>%s' % (eol_, ))
1449    def exportAttributes(self, lwrite, level, already_processed, namespace_='HTTPSessionObj:', name_='HTTPMessageType'):
1450        pass
1451    def exportChildren(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPMessageType', fromsubclass_=False, pretty_print=True):
1452        if pretty_print:
1453            eol_ = '\n'
1454        else:
1455            eol_ = ''
1456        if self.Length is not None:
1457            self.Length.export(lwrite, level, 'HTTPSessionObj:', name_='Length', pretty_print=pretty_print)
1458        if self.Message_Body is not None:
1459            self.Message_Body.export(lwrite, level, 'HTTPSessionObj:', name_='Message_Body', pretty_print=pretty_print)
1460    def build(self, node):
1461        self.__sourcenode__ = node
1462        already_processed = set()
1463        self.buildAttributes(node, node.attrib, already_processed)
1464        for child in node:
1465            nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1466            self.buildChildren(child, node, nodeName_)
1467    def buildAttributes(self, node, attrs, already_processed):
1468        pass
1469    def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
1470        if nodeName_ == 'Length':
1471            obj_ = cybox_common.PositiveIntegerObjectPropertyType.factory()
1472            obj_.build(child_)
1473            self.set_Length(obj_)
1474        elif nodeName_ == 'Message_Body':
1475            obj_ = cybox_common.StringObjectPropertyType.factory()
1476            obj_.build(child_)
1477            self.set_Message_Body(obj_)
1478# end class HTTPMessageType
1479
1480class HTTPStatusLineType(GeneratedsSuper):
1481    """The HTTPStatusLineType captures a single HTTP response status line."""
1482
1483    subclass = None
1484    superclass = None
1485    def __init__(self, Version=None, Status_Code=None, Reason_Phrase=None):
1486        self.Version = Version
1487        self.Status_Code = Status_Code
1488        self.Reason_Phrase = Reason_Phrase
1489    def factory(*args_, **kwargs_):
1490        if HTTPStatusLineType.subclass:
1491            return HTTPStatusLineType.subclass(*args_, **kwargs_)
1492        else:
1493            return HTTPStatusLineType(*args_, **kwargs_)
1494    factory = staticmethod(factory)
1495    def get_Version(self): return self.Version
1496    def set_Version(self, Version): self.Version = Version
1497    def validate_StringObjectPropertyType(self, value):
1498        # Validate type cybox_common.StringObjectPropertyType, a restriction on None.
1499        pass
1500    def get_Status_Code(self): return self.Status_Code
1501    def set_Status_Code(self, Status_Code): self.Status_Code = Status_Code
1502    def validate_PositiveIntegerObjectPropertyType(self, value):
1503        # Validate type cybox_common.PositiveIntegerObjectPropertyType, a restriction on None.
1504        pass
1505    def get_Reason_Phrase(self): return self.Reason_Phrase
1506    def set_Reason_Phrase(self, Reason_Phrase): self.Reason_Phrase = Reason_Phrase
1507    def hasContent_(self):
1508        if (
1509            self.Version is not None or
1510            self.Status_Code is not None or
1511            self.Reason_Phrase is not None
1512            ):
1513            return True
1514        else:
1515            return False
1516    def export(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPStatusLineType', namespacedef_='', pretty_print=True):
1517        if pretty_print:
1518            eol_ = '\n'
1519        else:
1520            eol_ = ''
1521        showIndent(lwrite, level, pretty_print)
1522        lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1523        already_processed = set()
1524        self.exportAttributes(lwrite, level, already_processed, namespace_, name_='HTTPStatusLineType')
1525        if self.hasContent_():
1526            lwrite('>%s' % (eol_, ))
1527            self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print)
1528            showIndent(lwrite, level, pretty_print)
1529            lwrite('</%s%s>%s' % (namespace_, name_, eol_))
1530        else:
1531            lwrite('/>%s' % (eol_, ))
1532    def exportAttributes(self, lwrite, level, already_processed, namespace_='HTTPSessionObj:', name_='HTTPStatusLineType'):
1533        pass
1534    def exportChildren(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPStatusLineType', fromsubclass_=False, pretty_print=True):
1535        if pretty_print:
1536            eol_ = '\n'
1537        else:
1538            eol_ = ''
1539        if self.Version is not None:
1540            self.Version.export(lwrite, level, 'HTTPSessionObj:', name_='Version', pretty_print=pretty_print)
1541        if self.Status_Code is not None:
1542            self.Status_Code.export(lwrite, level, 'HTTPSessionObj:', name_='Status_Code', pretty_print=pretty_print)
1543        if self.Reason_Phrase is not None:
1544            self.Reason_Phrase.export(lwrite, level, 'HTTPSessionObj:', name_='Reason_Phrase', pretty_print=pretty_print)
1545    def build(self, node):
1546        self.__sourcenode__ = node
1547        already_processed = set()
1548        self.buildAttributes(node, node.attrib, already_processed)
1549        for child in node:
1550            nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1551            self.buildChildren(child, node, nodeName_)
1552    def buildAttributes(self, node, attrs, already_processed):
1553        pass
1554    def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
1555        if nodeName_ == 'Version':
1556            obj_ = cybox_common.StringObjectPropertyType.factory()
1557            obj_.build(child_)
1558            self.set_Version(obj_)
1559        elif nodeName_ == 'Status_Code':
1560            obj_ = cybox_common.PositiveIntegerObjectPropertyType.factory()
1561            obj_.build(child_)
1562            self.set_Status_Code(obj_)
1563        elif nodeName_ == 'Reason_Phrase':
1564            obj_ = cybox_common.StringObjectPropertyType.factory()
1565            obj_.build(child_)
1566            self.set_Reason_Phrase(obj_)
1567# end class HTTPStatusLineType
1568
1569class HostFieldType(GeneratedsSuper):
1570    """The HostFieldType captures the details of the HTTP request Host
1571    header field."""
1572
1573    subclass = None
1574    superclass = None
1575    def __init__(self, Domain_Name=None, Port=None):
1576        self.Domain_Name = Domain_Name
1577        self.Port = Port
1578    def factory(*args_, **kwargs_):
1579        if HostFieldType.subclass:
1580            return HostFieldType.subclass(*args_, **kwargs_)
1581        else:
1582            return HostFieldType(*args_, **kwargs_)
1583    factory = staticmethod(factory)
1584    def get_Domain_Name(self): return self.Domain_Name
1585    def set_Domain_Name(self, Domain_Name): self.Domain_Name = Domain_Name
1586    def get_Port(self): return self.Port
1587    def set_Port(self, Port): self.Port = Port
1588    def hasContent_(self):
1589        if (
1590            self.Domain_Name is not None or
1591            self.Port is not None
1592            ):
1593            return True
1594        else:
1595            return False
1596    def export(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HostFieldType', namespacedef_='', pretty_print=True):
1597        if pretty_print:
1598            eol_ = '\n'
1599        else:
1600            eol_ = ''
1601        showIndent(lwrite, level, pretty_print)
1602        lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1603        already_processed = set()
1604        self.exportAttributes(lwrite, level, already_processed, namespace_, name_='HostFieldType')
1605        if self.hasContent_():
1606            lwrite('>%s' % (eol_, ))
1607            self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print)
1608            showIndent(lwrite, level, pretty_print)
1609            lwrite('</%s%s>%s' % (namespace_, name_, eol_))
1610        else:
1611            lwrite('/>%s' % (eol_, ))
1612    def exportAttributes(self, lwrite, level, already_processed, namespace_='HTTPSessionObj:', name_='HostFieldType'):
1613        pass
1614    def exportChildren(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HostFieldType', fromsubclass_=False, pretty_print=True):
1615        if pretty_print:
1616            eol_ = '\n'
1617        else:
1618            eol_ = ''
1619        if self.Domain_Name is not None:
1620            self.Domain_Name.export(lwrite, level, 'HTTPSessionObj:', name_='Domain_Name', pretty_print=pretty_print)
1621        if self.Port is not None:
1622            self.Port.export(lwrite, level, 'HTTPSessionObj:', name_='Port', pretty_print=pretty_print)
1623    def build(self, node):
1624        self.__sourcenode__ = node
1625        already_processed = set()
1626        self.buildAttributes(node, node.attrib, already_processed)
1627        for child in node:
1628            nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1629            self.buildChildren(child, node, nodeName_)
1630    def buildAttributes(self, node, attrs, already_processed):
1631        pass
1632    def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
1633        if nodeName_ == 'Domain_Name':
1634            obj_ = uri_object.URIObjectType.factory()
1635            obj_.build(child_)
1636            self.set_Domain_Name(obj_)
1637        elif nodeName_ == 'Port':
1638            obj_ = port_object.PortObjectType.factory()
1639            obj_.build(child_)
1640            self.set_Port(obj_)
1641# end class HostFieldType
1642
1643class HTTPMethodType(cybox_common.BaseObjectPropertyType):
1644    """HTTPMethodType specifies HTTP method types, via a union of the
1645    HTTPMethodEnum type and the atomic xs:string type. Its base type
1646    is the CybOX Core cybox_common.BaseObjectPropertyType, for permitting complex
1647    (i.e. regular-expression based) specifications.This attribute is
1648    optional and specifies the expected type for the value of the
1649    specified property."""
1650
1651    subclass = None
1652    superclass = cybox_common.BaseObjectPropertyType
1653    def __init__(self, obfuscation_algorithm_ref=None, refanging_transform_type=None, has_changed=None, delimiter='##comma##', pattern_type=None, datatype='string', refanging_transform=None, is_case_sensitive=True, bit_mask=None, appears_random=None, observed_encoding=None, defanging_algorithm_ref=None, is_obfuscated=None, regex_syntax=None, apply_condition='ANY', trend=None, idref=None, is_defanged=None, id=None, condition=None, valueOf_=None):
1654        super(HTTPMethodType, self).__init__(obfuscation_algorithm_ref, refanging_transform_type, has_changed, delimiter, pattern_type, datatype, refanging_transform, is_case_sensitive, bit_mask, appears_random, observed_encoding, defanging_algorithm_ref, is_obfuscated, regex_syntax, apply_condition, trend, idref, is_defanged, id, condition, valueOf_)
1655        self.datatype = _cast(None, datatype)
1656        self.valueOf_ = valueOf_
1657    def factory(*args_, **kwargs_):
1658        if HTTPMethodType.subclass:
1659            return HTTPMethodType.subclass(*args_, **kwargs_)
1660        else:
1661            return HTTPMethodType(*args_, **kwargs_)
1662    factory = staticmethod(factory)
1663    def get_datatype(self): return self.datatype
1664    def set_datatype(self, datatype): self.datatype = datatype
1665    def get_valueOf_(self): return self.valueOf_
1666    def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
1667    def hasContent_(self):
1668        if (
1669            self.valueOf_ or
1670            super(HTTPMethodType, self).hasContent_()
1671            ):
1672            return True
1673        else:
1674            return False
1675    def export(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPMethodType', namespacedef_='', pretty_print=True):
1676        if pretty_print:
1677            eol_ = '\n'
1678        else:
1679            eol_ = ''
1680        showIndent(lwrite, level, pretty_print)
1681        lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1682        already_processed = set()
1683        self.exportAttributes(lwrite, level, already_processed, namespace_, name_='HTTPMethodType')
1684        if self.hasContent_():
1685            lwrite('>')
1686            lwrite(quote_xml(self.valueOf_))
1687            self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print)
1688            lwrite('</%s%s>%s' % (namespace_, name_, eol_))
1689        else:
1690            lwrite('/>%s' % (eol_, ))
1691    def exportAttributes(self, lwrite, level, already_processed, namespace_='HTTPSessionObj:', name_='HTTPMethodType'):
1692        super(HTTPMethodType, self).exportAttributes(lwrite, level, already_processed, namespace_, name_='HTTPMethodType')
1693        if self.datatype is not None:
1694
1695            lwrite(' datatype=%s' % (quote_attrib(self.datatype), ))
1696    def exportChildren(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPMethodType', fromsubclass_=False, pretty_print=True):
1697        super(HTTPMethodType, self).exportChildren(lwrite, level, 'HTTPSessionObj:', name_, True, pretty_print=pretty_print)
1698        pass
1699    def build(self, node):
1700        self.__sourcenode__ = node
1701        already_processed = set()
1702        self.buildAttributes(node, node.attrib, already_processed)
1703        self.valueOf_ = get_all_text_(node)
1704        for child in node:
1705            nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1706            self.buildChildren(child, node, nodeName_)
1707    def buildAttributes(self, node, attrs, already_processed):
1708        value = find_attr_value_('datatype', node)
1709        if value is not None:
1710
1711            self.datatype = value
1712        super(HTTPMethodType, self).buildAttributes(node, attrs, already_processed)
1713    def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
1714        pass
1715# end class HTTPMethodType
1716
1717class HTTPSessionObjectType(cybox_common.ObjectPropertiesType):
1718    """The HTTPSessionObjectType is intended to capture the details of an
1719    HTTP session."""
1720
1721    subclass = None
1722    superclass = cybox_common.ObjectPropertiesType
1723    def __init__(self, object_reference=None, Custom_Properties=None, xsi_type=None, HTTP_Request_Response=None):
1724        super(HTTPSessionObjectType, self).__init__(object_reference, Custom_Properties, xsi_type )
1725        if HTTP_Request_Response is None:
1726            self.HTTP_Request_Response = []
1727        else:
1728            self.HTTP_Request_Response = HTTP_Request_Response
1729    def factory(*args_, **kwargs_):
1730        if HTTPSessionObjectType.subclass:
1731            return HTTPSessionObjectType.subclass(*args_, **kwargs_)
1732        else:
1733            return HTTPSessionObjectType(*args_, **kwargs_)
1734    factory = staticmethod(factory)
1735    def get_HTTP_Request_Response(self): return self.HTTP_Request_Response
1736    def set_HTTP_Request_Response(self, HTTP_Request_Response): self.HTTP_Request_Response = HTTP_Request_Response
1737    def add_HTTP_Request_Response(self, value): self.HTTP_Request_Response.append(value)
1738    def insert_HTTP_Request_Response(self, index, value): self.HTTP_Request_Response[index] = value
1739    def hasContent_(self):
1740        if (
1741            self.HTTP_Request_Response or
1742            super(HTTPSessionObjectType, self).hasContent_()
1743            ):
1744            return True
1745        else:
1746            return False
1747    def export(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPSessionObjectType', namespacedef_='', pretty_print=True):
1748        if pretty_print:
1749            eol_ = '\n'
1750        else:
1751            eol_ = ''
1752        showIndent(lwrite, level, pretty_print)
1753        lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1754        already_processed = set()
1755        self.exportAttributes(lwrite, level, already_processed, namespace_, name_='HTTPSessionObjectType')
1756        if self.hasContent_():
1757            lwrite('>%s' % (eol_, ))
1758            self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print)
1759            showIndent(lwrite, level, pretty_print)
1760            lwrite('</%s%s>%s' % (namespace_, name_, eol_))
1761        else:
1762            lwrite('/>%s' % (eol_, ))
1763    def exportAttributes(self, lwrite, level, already_processed, namespace_='HTTPSessionObj:', name_='HTTPSessionObjectType'):
1764        super(HTTPSessionObjectType, self).exportAttributes(lwrite, level, already_processed, namespace_, name_='HTTPSessionObjectType')
1765    def exportChildren(self, lwrite, level, namespace_='HTTPSessionObj:', name_='HTTPSessionObjectType', fromsubclass_=False, pretty_print=True):
1766        super(HTTPSessionObjectType, self).exportChildren(lwrite, level, 'HTTPSessionObj:', name_, True, pretty_print=pretty_print)
1767        if pretty_print:
1768            eol_ = '\n'
1769        else:
1770            eol_ = ''
1771        for HTTP_Request_Response_ in self.HTTP_Request_Response:
1772            HTTP_Request_Response_.export(lwrite, level, 'HTTPSessionObj:', name_='HTTP_Request_Response', pretty_print=pretty_print)
1773    def build(self, node):
1774        self.__sourcenode__ = node
1775        already_processed = set()
1776        self.buildAttributes(node, node.attrib, already_processed)
1777        for child in node:
1778            nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1779            self.buildChildren(child, node, nodeName_)
1780    def buildAttributes(self, node, attrs, already_processed):
1781        super(HTTPSessionObjectType, self).buildAttributes(node, attrs, already_processed)
1782    def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
1783        if nodeName_ == 'HTTP_Request_Response':
1784            obj_ = HTTPRequestResponseType.factory()
1785            obj_.build(child_)
1786            self.HTTP_Request_Response.append(obj_)
1787        super(HTTPSessionObjectType, self).buildChildren(child_, node, nodeName_, True)
1788# end class HTTPSessionObjectType
1789
1790GDSClassesMapping = {
1791    'Build_Utility': cybox_common.BuildUtilityType,
1792    'Errors': cybox_common.ErrorsType,
1793    'Environment_Variable': cybox_common.EnvironmentVariableType,
1794    'Accept_Charset': cybox_common.StringObjectPropertyType,
1795    'Search_Distance': cybox_common.IntegerObjectPropertyType,
1796    'Error': cybox_common.ErrorType,
1797    'Certificate_Issuer': cybox_common.StringObjectPropertyType,
1798    'Max_Forwards': cybox_common.IntegerObjectPropertyType,
1799    'Proxy_Authorization': cybox_common.StringObjectPropertyType,
1800    'Metadata': cybox_common.MetadataType,
1801    'Hash': cybox_common.HashType,
1802    'Content_Range': cybox_common.StringObjectPropertyType,
1803    'User_Agent': cybox_common.StringObjectPropertyType,
1804    'Information_Source_Type': cybox_common.ControlledVocabularyStringType,
1805    'Internal_Strings': cybox_common.InternalStringsType,
1806    'Fuzzy_Hash_Structure': cybox_common.FuzzyHashStructureType,
1807    'SubDatum': cybox_common.MetadataType,
1808    'Segment_Hash': cybox_common.HashValueType,
1809    'Digital_Signature': cybox_common.DigitalSignatureInfoType,
1810    'X_Forwarded_Proto': cybox_common.StringObjectPropertyType,
1811    'X_ATT_DeviceId': cybox_common.StringObjectPropertyType,
1812    'Code_Snippets': cybox_common.CodeSnippetsType,
1813    'URI': uri_object.URIObjectType,
1814    'Value': cybox_common.AnyURIObjectPropertyType,
1815    'Length': cybox_common.IntegerObjectPropertyType,
1816    'If_Range': cybox_common.StringObjectPropertyType,
1817    'Strict_Transport_Security': cybox_common.StringObjectPropertyType,
1818    'Internationalization_Settings': cybox_common.InternationalizationSettingsType,
1819    'Encoding': cybox_common.ControlledVocabularyStringType,
1820    'Warning': cybox_common.StringObjectPropertyType,
1821    'English_Translation': cybox_common.StringObjectPropertyType,
1822    'Segments': cybox_common.HashSegmentsType,
1823    'Layer4_Protocol': port_object.Layer4ProtocolType,
1824    'Content_Length': cybox_common.IntegerObjectPropertyType,
1825    'X_UA_Compatible': cybox_common.StringObjectPropertyType,
1826    'Functions': cybox_common.FunctionsType,
1827    'From': address_object.AddressObjectType,
1828    'String_Value': cybox_common.StringObjectPropertyType,
1829    'If_Modified_Since': cybox_common.DateTimeObjectPropertyType,
1830    'Compiler_Informal_Description': cybox_common.CompilerInformalDescriptionType,
1831    'System': cybox_common.ObjectPropertiesType,
1832    'Platform': cybox_common.PlatformSpecificationType,
1833    'Version': cybox_common.StringObjectPropertyType,
1834    'Location': uri_object.URIObjectType,
1835    'Accept_Language': cybox_common.StringObjectPropertyType,
1836    'Error_Instances': cybox_common.ErrorInstancesType,
1837    'Type': cybox_common.ControlledVocabularyStringType,
1838    'Compilers': cybox_common.CompilersType,
1839    'Tool_Type': cybox_common.ControlledVocabularyStringType,
1840    'If_None_Match': cybox_common.StringObjectPropertyType,
1841    'Tool': cybox_common.ToolInformationType,
1842    'Build_Information': cybox_common.BuildInformationType,
1843    'Link': cybox_common.StringObjectPropertyType,
1844    'Search_Within': cybox_common.IntegerObjectPropertyType,
1845    'Tool_Hashes': cybox_common.HashListType,
1846    'X_Frame_Options': cybox_common.StringObjectPropertyType,
1847    'Message_Body': cybox_common.StringObjectPropertyType,
1848    'Raw_Header': cybox_common.StringObjectPropertyType,
1849    'Age': cybox_common.IntegerObjectPropertyType,
1850    'Retry_After': cybox_common.IntegerObjectPropertyType,
1851    'Server': cybox_common.StringObjectPropertyType,
1852    'Range': cybox_common.StringObjectPropertyType,
1853    'Certificate_Subject': cybox_common.StringObjectPropertyType,
1854    'Data_Segment': cybox_common.StringObjectPropertyType,
1855    'Property': cybox_common.PropertyType,
1856    'Strings': cybox_common.ExtractedStringsType,
1857    'Via': cybox_common.StringObjectPropertyType,
1858    'Tool_Specific_Data': cybox_common.ToolSpecificDataType,
1859    'Contributors': cybox_common.PersonnelType,
1860    'Transfer_Encoding': cybox_common.StringObjectPropertyType,
1861    'Reference_Description': cybox_common.StructuredTextType,
1862    'User_Account_Info': cybox_common.ObjectPropertiesType,
1863    'Expect': cybox_common.StringObjectPropertyType,
1864    'Execution_Environment': cybox_common.ExecutionEnvironmentType,
1865    'Configuration_Settings': cybox_common.ConfigurationSettingsType,
1866    'Compiler_Platform_Specification': cybox_common.PlatformSpecificationType,
1867    'Byte_String_Value': cybox_common.HexBinaryObjectPropertyType,
1868    'Image_Offset': cybox_common.IntegerObjectPropertyType,
1869    'Reason_Phrase': cybox_common.StringObjectPropertyType,
1870    'Instance': cybox_common.ObjectPropertiesType,
1871    'Import': cybox_common.StringObjectPropertyType,
1872    'Authorization': cybox_common.StringObjectPropertyType,
1873    'Accept_Encoding': cybox_common.StringObjectPropertyType,
1874    'Identifier': cybox_common.PlatformIdentifierType,
1875    'X_Forwarded_For': cybox_common.StringObjectPropertyType,
1876    'X_XSS_Protection': cybox_common.StringObjectPropertyType,
1877    'X_Content_Type_Options': cybox_common.StringObjectPropertyType,
1878    'Domain_Name': uri_object.URIObjectType,
1879    'Dependencies': cybox_common.DependenciesType,
1880    'Cookie': cybox_common.StringObjectPropertyType,
1881    'Offset': cybox_common.IntegerObjectPropertyType,
1882    'Date': cybox_common.DateRangeType,
1883    'Referer': uri_object.URIObjectType,
1884    'Hashes': cybox_common.HashListType,
1885    'Content_Disposition': cybox_common.StringObjectPropertyType,
1886    'Cache_Control': cybox_common.StringObjectPropertyType,
1887    'Language': cybox_common.StringObjectPropertyType,
1888    'Usage_Context_Assumption': cybox_common.StructuredTextType,
1889    'Block_Hash': cybox_common.FuzzyHashBlockType,
1890    'DNT': cybox_common.StringObjectPropertyType,
1891    'Connection': cybox_common.StringObjectPropertyType,
1892    'X_Requested_With': cybox_common.StringObjectPropertyType,
1893    'Time': cybox_common.TimeType,
1894    'P3P': cybox_common.StringObjectPropertyType,
1895    'If_Unmodified_Since': cybox_common.DateTimeObjectPropertyType,
1896    'Trigger_Point': cybox_common.HexBinaryObjectPropertyType,
1897    'Trailer': cybox_common.StringObjectPropertyType,
1898    'ETag': cybox_common.StringObjectPropertyType,
1899    'Byte_Run': cybox_common.ByteRunType,
1900    'File_System_Offset': cybox_common.IntegerObjectPropertyType,
1901    'Tool_Configuration': cybox_common.ToolConfigurationType,
1902    'Imports': cybox_common.ImportsType,
1903    'X_Powered_By': cybox_common.StringObjectPropertyType,
1904    'Vary': uri_object.URIObjectType,
1905    'Library': cybox_common.LibraryType,
1906    'References': cybox_common.ToolReferencesType,
1907    'Access_Control_Allow_Origin': cybox_common.StringObjectPropertyType,
1908    'Usage_Context_Assumptions': cybox_common.UsageContextAssumptionsType,
1909    'Block_Hash_Value': cybox_common.HashValueType,
1910    'Custom_Properties': cybox_common.CustomPropertiesType,
1911    'Status_Code': cybox_common.PositiveIntegerObjectPropertyType,
1912    'Configuration_Setting': cybox_common.ConfigurationSettingType,
1913    'Libraries': cybox_common.LibrariesType,
1914    'Content_Language': cybox_common.StringObjectPropertyType,
1915    'Content_Location': cybox_common.StringObjectPropertyType,
1916    'Content_MD5': cybox_common.StringObjectPropertyType,
1917    'Segment_Count': cybox_common.IntegerObjectPropertyType,
1918    'Function': cybox_common.StringObjectPropertyType,
1919    'Description': cybox_common.StructuredTextType,
1920    'Code_Snippet': cybox_common.ObjectPropertiesType,
1921    'Build_Configuration': cybox_common.BuildConfigurationType,
1922    'X_Wap_Profile': uri_object.URIObjectType,
1923    'Expires': cybox_common.DateTimeObjectPropertyType,
1924    'VLAN_Name': cybox_common.StringObjectPropertyType,
1925    'Content_Encoding': cybox_common.StringObjectPropertyType,
1926    'Pragma': cybox_common.StringObjectPropertyType,
1927    'Address': address_object.AddressObjectType,
1928    'TE': cybox_common.StringObjectPropertyType,
1929    'Segment': cybox_common.HashSegmentType,
1930    'Port_Value': cybox_common.PositiveIntegerObjectPropertyType,
1931    'Compiler': cybox_common.CompilerType,
1932    'Name': cybox_common.StringObjectPropertyType,
1933    'Set_Cookie': cybox_common.StringObjectPropertyType,
1934    'Address_Value': cybox_common.StringObjectPropertyType,
1935    'Dependency': cybox_common.DependencyType,
1936    'Accept_Datetime': cybox_common.StringObjectPropertyType,
1937    'Last_Modified': cybox_common.DateTimeObjectPropertyType,
1938    'Refresh': cybox_common.IntegerObjectPropertyType,
1939    'Content_Type': cybox_common.StringObjectPropertyType,
1940    'Signature_Description': cybox_common.StringObjectPropertyType,
1941    'Block_Size': cybox_common.IntegerObjectPropertyType,
1942    'Simple_Hash_Value': cybox_common.SimpleHashValueType,
1943    'Proxy_Authenticate': cybox_common.StringObjectPropertyType,
1944    'String': cybox_common.ExtractedStringType,
1945    'Tools': cybox_common.ToolsInformationType,
1946    'Build_Utility_Platform_Specification': cybox_common.PlatformSpecificationType,
1947    'Fuzzy_Hash_Value': cybox_common.FuzzyHashValueType,
1948    'Accept': cybox_common.StringObjectPropertyType,
1949    'Data_Size': cybox_common.DataSizeType,
1950    'Dependency_Description': cybox_common.StructuredTextType,
1951    'WWW_Authenticate': cybox_common.StringObjectPropertyType,
1952    'Contributor': cybox_common.ContributorType,
1953    'If_Match': cybox_common.StringObjectPropertyType,
1954    'Accept_Ranges': cybox_common.StringObjectPropertyType,
1955    'Port': port_object.PortObjectType,
1956    'VLAN_Num': cybox_common.IntegerObjectPropertyType,
1957}
1958
1959USAGE_TEXT = """
1960Usage: python <Parser>.py [ -s ] <in_xml_file>
1961"""
1962
1963def usage():
1964    print(USAGE_TEXT)
1965    sys.exit(1)
1966
1967def get_root_tag(node):
1968    tag = Tag_pattern_.match(node.tag).groups()[-1]
1969    rootClass = GDSClassesMapping.get(tag)
1970    if rootClass is None:
1971        rootClass = globals().get(tag)
1972    return tag, rootClass
1973
1974def parse(inFileName):
1975    doc = parsexml_(inFileName)
1976    rootNode = doc.getroot()
1977    rootTag, rootClass = get_root_tag(rootNode)
1978    if rootClass is None:
1979        rootTag = 'HTTP_Session'
1980        rootClass = HTTPSessionObjectType
1981    rootObj = rootClass.factory()
1982    rootObj.build(rootNode)
1983    # Enable Python to collect the space used by the DOM.
1984    doc = None
1985#    sys.stdout.write('<?xml version="1.0" ?>\n')
1986#    rootObj.export(sys.stdout.write, 0, name_=rootTag,
1987#        namespacedef_='',
1988#        pretty_print=True)
1989    return rootObj
1990
1991def parseEtree(inFileName):
1992    doc = parsexml_(inFileName)
1993    rootNode = doc.getroot()
1994    rootTag, rootClass = get_root_tag(rootNode)
1995    if rootClass is None:
1996        rootTag = 'HTTP_Session'
1997        rootClass = HTTPSessionObjectType
1998    rootObj = rootClass.factory()
1999    rootObj.build(rootNode)
2000    # Enable Python to collect the space used by the DOM.
2001    doc = None
2002    rootElement = rootObj.to_etree(None, name_=rootTag)
2003    content = etree_.tostring(rootElement, pretty_print=True,
2004        xml_declaration=True, encoding="utf-8")
2005    sys.stdout.write(content)
2006    sys.stdout.write('\n')
2007    return rootObj, rootElement
2008
2009def parseString(inString):
2010    from mixbox.vendor.six import StringIO
2011    doc = parsexml_(StringIO(inString))
2012    rootNode = doc.getroot()
2013    rootTag, rootClass = get_root_tag(rootNode)
2014    if rootClass is None:
2015        rootTag = 'HTTP_Session'
2016        rootClass = HTTPSessionObjectType
2017    rootObj = rootClass.factory()
2018    rootObj.build(rootNode)
2019    # Enable Python to collect the space used by the DOM.
2020    doc = None
2021#    sys.stdout.write('<?xml version="1.0" ?>\n')
2022#    rootObj.export(sys.stdout.write, 0, name_="HTTP_Session",
2023#        namespacedef_='')
2024    return rootObj
2025
2026def main():
2027    args = sys.argv[1:]
2028    if len(args) == 1:
2029        parse(args[0])
2030    else:
2031        usage()
2032
2033if __name__ == '__main__':
2034    #import pdb; pdb.set_trace()
2035    main()
2036
2037__all__ = [
2038    "HTTPSessionObjectType",
2039    "HTTPRequestResponseType",
2040    "HTTPClientRequestType",
2041    "HTTPServerResponseType",
2042    "HTTPRequestLineType",
2043    "HTTPRequestHeaderType",
2044    "HTTPRequestHeaderFieldsType",
2045    "HTTPResponseHeaderType",
2046    "HTTPResponseHeaderFieldsType",
2047    "HTTPMessageType",
2048    "HTTPStatusLineType",
2049    "HostFieldType",
2050    "HTTPMethodType"
2051    ]
2052