# Copyright, 2017, by Samuel G. D. Williams. <http://www.codeotaku.com># # Permission is hereby granted, free of charge, to any person obtaining a copy# of this software and associated documentation files (the "Software"), to deal# in the Software without restriction, including without limitation the rights# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell# copies of the Software, and to permit persons to whom the Software is# furnished to do so, subject to the following conditions:# # The above copyright notice and this permission notice shall be included in# all copies or substantial portions of the Software.# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN# THE SOFTWARE.require_relative'body/buffered'require_relative'body/reader'moduleProtocolmoduleHTTPclassResponseprependBody::Readerdefinitialize(version=nil,status=200,reason=nil,headers=[],body=nil,protocol=nil)@version=version@status=status@reason=reason@headers=headers@body=body@protocol=protocolendattr_accessor:versionattr_accessor:statusattr_accessor:headersattr_accessor:bodyattr_accessor:protocoldefhijack?falseenddefcontinue?status==100enddefsuccess?status>=200&&status<300enddefpartial?status==206enddefredirection?status>=300&&status<400enddefpreserve_method?status==307||status==308enddeffailure?status>=400&&status<600enddefbad_request?status==400enddefserver_failure?status==500enddefself.[](status,headers=[],body=nil,protocol=nil)body=Body::Buffered.wrap(body)self.new(nil,status,nil,headers,body,protocol)enddefself.for_exception(exception)Response[500,Headers['content-type'=>'text/plain'],["#{exception.class}: #{exception.message}"]]enddefto_s"#{@status}#{@reason}#{@version}"enddefto_aryreturn@status,@headers,@bodyendendendend