summaryrefslogtreecommitdiff
path: root/ruby_2_2/lib/webrick/httpversion.rb
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-14 15:09:35 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-14 15:09:35 +0000
commit1a74fa4b04da04bd2bb33103dd3cf431438df38e (patch)
treef4a1d6c2961339e0c1d653c0f8427a53315080f0 /ruby_2_2/lib/webrick/httpversion.rb
parenta5b755e50e2d9aabf28ba24bf58644ca22b01a4f (diff)
add tag v2_2_9
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v2_2_9@61257 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby_2_2/lib/webrick/httpversion.rb')
-rw-r--r--ruby_2_2/lib/webrick/httpversion.rb75
1 files changed, 75 insertions, 0 deletions
diff --git a/ruby_2_2/lib/webrick/httpversion.rb b/ruby_2_2/lib/webrick/httpversion.rb
new file mode 100644
index 0000000000..cdfb957296
--- /dev/null
+++ b/ruby_2_2/lib/webrick/httpversion.rb
@@ -0,0 +1,75 @@
+#--
+# HTTPVersion.rb -- presentation of HTTP version
+#
+# Author: IPR -- Internet Programming with Ruby -- writers
+# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
+# reserved.
+#
+# $IPR: httpversion.rb,v 1.5 2002/09/21 12:23:37 gotoyuzo Exp $
+
+module WEBrick
+
+ ##
+ # Represents an HTTP protocol version
+
+ class HTTPVersion
+ include Comparable
+
+ ##
+ # The major protocol version number
+
+ attr_accessor :major
+
+ ##
+ # The minor protocol version number
+
+ attr_accessor :minor
+
+ ##
+ # Converts +version+ into an HTTPVersion
+
+ def self.convert(version)
+ version.is_a?(self) ? version : new(version)
+ end
+
+ ##
+ # Creates a new HTTPVersion from +version+.
+
+ def initialize(version)
+ case version
+ when HTTPVersion
+ @major, @minor = version.major, version.minor
+ when String
+ if /^(\d+)\.(\d+)$/ =~ version
+ @major, @minor = $1.to_i, $2.to_i
+ end
+ end
+ if @major.nil? || @minor.nil?
+ raise ArgumentError,
+ format("cannot convert %s into %s", version.class, self.class)
+ end
+ end
+
+ ##
+ # Compares this version with +other+ according to the HTTP specification
+ # rules.
+
+ def <=>(other)
+ unless other.is_a?(self.class)
+ other = self.class.new(other)
+ end
+ if (ret = @major <=> other.major) == 0
+ return @minor <=> other.minor
+ end
+ return ret
+ end
+
+ ##
+ # The HTTP version as show in the HTTP request and response. For example,
+ # "1.1"
+
+ def to_s
+ format("%d.%d", @major, @minor)
+ end
+ end
+end