Files
EWF/library/server/wsf/router/wsf_http_protocol_version.e
2013-03-27 17:18:16 +00:00

79 lines
2.0 KiB
Plaintext

note
description: "[
Parsed form of HTTP-Version field of request line.
See http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.1 for specification if the protocol is HTTP.
CGI 1.1 (not official specification) supports alternative protocols
and extension tokens. We do not currently recognise any of
these as valid.
date: "$Date$"
revision: "$Revision$"
]"
class WSF_HTTP_PROTOCOL_VERSION
create
make
feature {NONE} -- Initialization
make (a_protocol: READABLE_STRING_8)
-- Create by parsing `a_protocol'.
require
a_protocol_attached: a_protocol /= Void
local
l_tokens: LIST [READABLE_STRING_8]
l_protocol_name, l_protocol_version, l_major, l_minor: STRING_8
do
l_tokens := a_protocol.split ('/')
if l_tokens.count = 2 then
l_protocol_name := l_tokens [1].as_string_8
l_protocol_name.left_adjust
l_protocol_name.right_adjust
if l_protocol_name.is_case_insensitive_equal ({HTTP_CONSTANTS}.http_version_1_0.substring (1, 4)) then
l_protocol_version := l_tokens [2].as_string_8
l_protocol_version.left_adjust
l_protocol_version.right_adjust
l_tokens := l_protocol_version.split ('.')
if l_tokens.count = 2 then
l_major := l_tokens [1].as_string_8
l_major.left_adjust
l_major.right_adjust
l_minor := l_tokens [2].as_string_8
l_minor.left_adjust
l_minor.right_adjust
if l_major.is_natural then
major := l_major.to_natural
is_valid := True
-- We should be able to work with version 2
-- or greater by just functioning as HTTP/1.1
end
if l_minor.is_natural then
minor := l_minor.to_natural
end
end
end
end
end
feature -- Access
major: NATURAL
-- Major version of HTTP protocol;
-- Typically 1
minor: NATURAL
-- Major version of HTTP protocol;
-- Typically 1 or 0
feature -- Status report
is_valid: BOOLEAN
-- Was SERVER_PROTOCOL parsed successfully as HTTP?
end