Sha256: b2378324e29d3d6ef953e4ca76c877fe689e33fc1f574b6c9b0666d9c6e6df82

Contents?: true

Size: 1.6 KB

Versions: 91

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true
#--
# 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

Version data entries

91 entries across 91 versions & 9 rubygems

Version Path
minato_ruby_api_client-0.2.2 vendor/bundle/ruby/3.2.0/gems/webrick-1.8.1/lib/webrick/httpversion.rb
webrick-1.9.1 lib/webrick/httpversion.rb
webrick-1.9.0 lib/webrick/httpversion.rb
webrick-1.8.2 lib/webrick/httpversion.rb
fluent-plugin-nuopenlineage-light-0.1.0 vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpversion.rb
fluent-plugin-openlineage-light-0.1.4 vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpversion.rb
fluent-plugin-openlineage-light-0.1.3 vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpversion.rb
fluent-plugin-openlineage-0.1.0 vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpversion.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/webrick-1.8.1/lib/webrick/httpversion.rb
tinymce-rails-7.1.2 vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpversion.rb
shopify-cli-2.36.0 vendor/deps/webrick/lib/webrick/httpversion.rb
fluent-plugin-google-cloud-logging-on-prem-0.1.0 vendor/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/httpversion.rb
shopify-cli-2.35.0 vendor/deps/webrick/lib/webrick/httpversion.rb
webrick-1.8.1 lib/webrick/httpversion.rb
webrick-1.8.0 lib/webrick/httpversion.rb
shopify-cli-2.34.0 vendor/deps/webrick/lib/webrick/httpversion.rb
shopify-cli-2.33.1 vendor/deps/webrick/lib/webrick/httpversion.rb
shopify-cli-2.33.0 vendor/deps/webrick/lib/webrick/httpversion.rb
shopify-cli-2.32.1 vendor/deps/webrick/lib/webrick/httpversion.rb
shopify-cli-2.32.0 vendor/deps/webrick/lib/webrick/httpversion.rb