Class: Rbkb::Http::Base
- Includes:
- CommonInterface
- Defined in:
- lib/rbkb/http/base.rb
Overview
A base class containing some common features for Request and Response objects.
Don’t use this class directly, it’s intended for being overridden from its derived classes or mixins.
Instance Attribute Summary collapse
-
#body ⇒ Object
Returns the value of attribute body.
-
#headers ⇒ Object
Returns the value of attribute headers.
Class Method Summary collapse
Instance Method Summary collapse
- #attach_new_body(body_obj = nil) ⇒ Object
- #attach_new_header(hdr_obj = nil) ⇒ Object
-
#capture_body(bstr) ⇒ Object
This method parses just HTTP message body.
-
#capture_complete? ⇒ Boolean
Indicates whether this object is ready to capture fresh data, or is waiting for additional data or a reset from a previous incomplete or otherwise broken capture.
-
#capture_headers(hstr) ⇒ Object
This method parses only HTTP response headers.
-
#content_length(hdrs = @headers) ⇒ Object
This method returns the content length from Headers.
-
#default_body_obj(*args) ⇒ Object
XXX doc override!.
-
#default_headers_obj(*args) ⇒ Object
XXX doc override!.
-
#first_entity ⇒ Object
XXX stub.
-
#first_entity=(f) ⇒ Object
XXX stub.
-
#initialize(*args) ⇒ Base
constructor
Initializes a new Base object.
-
#reset_capture ⇒ Object
This method will non-destructively reset the capture state on this object and all child entities.
-
#reset_capture! ⇒ Object
This method will destructively reset the capture state on this object.
Methods included from CommonInterface
Constructor Details
#initialize(*args) ⇒ Base
Initializes a new Base object
16 17 18 |
# File 'lib/rbkb/http/base.rb', line 16 def initialize(*args) _common_init(*args) end |
Instance Attribute Details
#body ⇒ Object
Returns the value of attribute body.
132 133 134 |
# File 'lib/rbkb/http/base.rb', line 132 def body @body end |
#headers ⇒ Object
Returns the value of attribute headers.
132 133 134 |
# File 'lib/rbkb/http/base.rb', line 132 def headers @headers end |
Class Method Details
.parse(*args) ⇒ Object
11 12 13 |
# File 'lib/rbkb/http/base.rb', line 11 def self.parse(*args) new(*args) end |
Instance Method Details
#attach_new_body(body_obj = nil) ⇒ Object
75 76 77 78 |
# File 'lib/rbkb/http/base.rb', line 75 def attach_new_body(body_obj=nil) self.body = body_obj return body_obj end |
#attach_new_header(hdr_obj = nil) ⇒ Object
70 71 72 73 |
# File 'lib/rbkb/http/base.rb', line 70 def attach_new_header(hdr_obj=nil) self.headers = hdr_obj return hdr_obj end |
#capture_body(bstr) ⇒ Object
This method parses just HTTP message body. Expects body to be split from the headers before-hand.
22 23 24 25 |
# File 'lib/rbkb/http/base.rb', line 22 def capture_body(bstr) self.body ||= default_body_obj @body.capture(bstr) end |
#capture_complete? ⇒ Boolean
Indicates whether this object is ready to capture fresh data, or is waiting for additional data or a reset from a previous incomplete or otherwise broken capture. See also: reset_capture, reset_capture!
123 124 125 126 127 128 129 130 |
# File 'lib/rbkb/http/base.rb', line 123 def capture_complete? if( (@headers and not @headers.capture_complete?) or (@body and not @body.capture_complete?) ) return false else true end end |
#capture_headers(hstr) ⇒ Object
This method parses only HTTP response headers. Expects headers to be split from the body before-hand.
39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/rbkb/http/base.rb', line 39 def capture_headers(hstr) self.headers ||= default_headers_obj if @body and not @body.capture_complete? return elsif @headers.capture_complete? self.first_entity, @headers = default_headers_obj.capture_full_headers(hstr) else @headers.capture(hstr) end end |
#content_length(hdrs = @headers) ⇒ Object
This method returns the content length from Headers. This is mostly useful if you are using a BoundBody object for the body.
Returns nil if no “Content-Length” is not found.
The opts parameter :ignore_content_length affects this method and will cause it always to return nil. This is useful, for example, for the responses to the HTTP HEAD request method, which return a Content-Length without actual content.
61 62 63 64 65 66 67 68 |
# File 'lib/rbkb/http/base.rb', line 61 def content_length(hdrs=@headers) raise "headers is nil?" if not hdrs if( (not @opts[:ignore_content_length]) and hdrs.get_header_value("Content-Length").to_s =~ /^(\d+)$/ ) $1.to_i end end |
#default_body_obj(*args) ⇒ Object
XXX doc override!
86 87 88 |
# File 'lib/rbkb/http/base.rb', line 86 def default_body_obj(*args) Body.new(*args) end |
#default_headers_obj(*args) ⇒ Object
XXX doc override!
81 82 83 |
# File 'lib/rbkb/http/base.rb', line 81 def default_headers_obj(*args) Header.new(*args) end |
#first_entity ⇒ Object
XXX stub
28 29 30 |
# File 'lib/rbkb/http/base.rb', line 28 def first_entity @first_entity end |
#first_entity=(f) ⇒ Object
XXX stub
33 34 35 |
# File 'lib/rbkb/http/base.rb', line 33 def first_entity=(f) @first_entity=(f) end |
#reset_capture ⇒ Object
This method will non-destructively reset the capture state on this object and all child entities. Note, however, If child entities are not defined, it may instantiate new ones. See also: capture_complete?, reset_capture!
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/rbkb/http/base.rb', line 94 def reset_capture if @headers @headers.reset_capture if not @headers.capture_complete? else attach_new_header() end if @body @body.reset_capture if not @body.capture_complete? else attach_new_body() end @capture_state = nil self end |
#reset_capture! ⇒ Object
This method will destructively reset the capture state on this object. It does so by initializing fresh child entities and discarding the old ones. See also: capture_complete?, reset_capture
113 114 115 116 117 118 |
# File 'lib/rbkb/http/base.rb', line 113 def reset_capture! attach_new_header() attach_new_body() @capture_state = nil self end |