Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package rubygem-rack for openSUSE:Factory checked in at 2022-12-13 18:56:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-rack (Old) and /work/SRC/openSUSE:Factory/.rubygem-rack.new.1835 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-rack" Tue Dec 13 18:56:53 2022 rev:23 rq:1042654 version:3.0.2 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-rack/rubygem-rack.changes 2022-10-11 18:05:26.458074250 +0200 +++ /work/SRC/openSUSE:Factory/.rubygem-rack.new.1835/rubygem-rack.changes 2022-12-13 18:57:19.071795836 +0100 @@ -1,0 +2,21 @@ +Wed Dec 7 11:31:08 UTC 2022 - Stephan Kulow <co...@suse.com> + +updated to version 3.0.2 + see installed CHANGELOG.md + + ## [3.0.2] -2022-12-05 + + ### Fixed + + - `Utils.build_nested_query` URL-encodes nested field names including the square brackets. + - Allow `Rack::Response` to pass through streaming bodies. ([#1993](https://github.com/rack/rack/pull/1993), [@ioquatix]) + + ## [3.0.1] - 2022-11-18 + + ### Fixed + + - `MethodOverride` does not look for an override if a request does not include form/parseable data. + - `Rack::Lint::Wrapper` correctly handles `respond_to?` with `to_ary`, `each`, `call` and `to_path`, forwarding to the body. ([#1981](https://github.com/rack/rack/pull/1981), [@ioquatix]) + + +------------------------------------------------------------------- Old: ---- rack-3.0.0.gem New: ---- rack-3.0.2.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-rack.spec ++++++ --- /var/tmp/diff_new_pack.ITDbqk/_old 2022-12-13 18:57:19.747799443 +0100 +++ /var/tmp/diff_new_pack.ITDbqk/_new 2022-12-13 18:57:19.751799464 +0100 @@ -24,7 +24,7 @@ # Name: rubygem-rack -Version: 3.0.0 +Version: 3.0.2 Release: 0 %define mod_name rack %define mod_full_name %{mod_name}-%{version} ++++++ rack-3.0.0.gem -> rack-3.0.2.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md --- old/CHANGELOG.md 2022-09-06 18:28:21.000000000 +0200 +++ new/CHANGELOG.md 2022-12-05 06:12:56.000000000 +0100 @@ -2,6 +2,20 @@ All notable changes to this project will be documented in this file. For info on how to format all future additions to this file please reference [Keep A Changelog](https://keepachangelog.com/en/1.0.0/). +## [3.0.2] -2022-12-05 + +### Fixed + +- `Utils.build_nested_query` URL-encodes nested field names including the square brackets. +- Allow `Rack::Response` to pass through streaming bodies. ([#1993](https://github.com/rack/rack/pull/1993), [@ioquatix]) + +## [3.0.1] - 2022-11-18 + +### Fixed + +- `MethodOverride` does not look for an override if a request does not include form/parseable data. +- `Rack::Lint::Wrapper` correctly handles `respond_to?` with `to_ary`, `each`, `call` and `to_path`, forwarding to the body. ([#1981](https://github.com/rack/rack/pull/1981), [@ioquatix]) + ## [3.0.0] - 2022-09-06 - No changes @@ -34,7 +48,7 @@ - `SERVER_PROTOCOL` is now a required environment key, matching the HTTP protocol used in the request. - `rack.hijack?` (partial hijack) and `rack.hijack` (full hijack) are now independently optional. - `rack.hijack_io` has been removed completely. -- `rack.response_finished` is an optional environment key which contains an array of callable objects that must accept `#call(env, status, headers, error)` and are invoked after the response is finished (either successfully or unsucessfully). +- `rack.response_finished` is an optional environment key which contains an array of callable objects that must accept `#call(env, status, headers, error)` and are invoked after the response is finished (either successfully or unsuccessfully). - It is okay to call `#close` on `rack.input` to indicate that you no longer need or care about the input. - The stream argument supplied to the streaming body and hijack must support `#<<` for writing output. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/README.md new/README.md --- old/README.md 2022-09-06 18:28:21.000000000 +0200 +++ new/README.md 2022-12-05 06:12:56.000000000 +0100 @@ -1,6 +1,6 @@ #  -> **_NOTE:_** Rack v3.0.0.beta1 was recently released. Please check the [Upgrade +> **_NOTE:_** Rack v3.0.0 was recently released. Please check the [Upgrade > Guide](UPGRADE-GUIDE.md) for more details about migrating your existing > servers, middlewares and applications. For detailed information on specific > changes, check the [Change Log](CHANGELOG.md). @@ -23,7 +23,7 @@ $ gem install rack --pre # or, add it to your current application gemfile: -$ bundle add rack --version 3.0.0.beta1 +$ bundle add rack --version 3.0.0 ``` If you need features from `Rack::Session` or `bin/rackup` please add those gems separately. Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/auth/basic.rb new/lib/rack/auth/basic.rb --- old/lib/rack/auth/basic.rb 2022-09-06 18:28:21.000000000 +0200 +++ new/lib/rack/auth/basic.rb 2022-12-05 06:12:56.000000000 +0100 @@ -10,8 +10,6 @@ # # Initialize with the Rack application that you want protecting, # and a block that checks if a username and password pair are valid. - # - # See also: <tt>example/protectedlobster.rb</tt> class Basic < AbstractHandler diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/builder.rb new/lib/rack/builder.rb --- old/lib/rack/builder.rb 2022-09-06 18:28:21.000000000 +0200 +++ new/lib/rack/builder.rb 2022-12-05 06:12:56.000000000 +0100 @@ -10,26 +10,23 @@ # # Example: # - # require 'rack/lobster' - # app = Rack::Builder.new do - # use Rack::CommonLogger - # use Rack::ShowExceptions - # map "/lobster" do - # use Rack::Lint - # run Rack::Lobster.new - # end - # end + # app = Rack::Builder.new do + # use Rack::CommonLogger + # map "/ok" do + # run lambda { |env| [200, {'content-type' => 'text/plain'}, ['OK']] } + # end + # end # - # run app + # run app # # Or # - # app = Rack::Builder.app do - # use Rack::CommonLogger - # run lambda { |env| [200, {'Content-Type' => 'text/plain'}, ['OK']] } - # end + # app = Rack::Builder.app do + # use Rack::CommonLogger + # run lambda { |env| [200, {'content-type' => 'text/plain'}, ['OK']] } + # end # - # run app + # run app # # +use+ adds middleware to the stack, +run+ dispatches to an application. # You can use +map+ to construct a Rack::URLMap in a convenient way. @@ -180,15 +177,6 @@ # # run Heartbeat.new # - # It could also be a module: - # - # module HelloWorld - # def call(env) - # [200, { "content-type" => "text/plain" }, ["Hello World"]] - # end - # end - # - # run HelloWorld def run(app = nil, &block) raise ArgumentError, "Both app and block given!" if app && block_given? @@ -213,21 +201,35 @@ # the Rack application specified by run inside the block. Other requests will be sent to the # default application specified by run outside the block. # - # Rack::Builder.app do + # class App + # def call(env) + # [200, {'content-type' => 'text/plain'}, ["Hello World"]] + # end + # end + # + # class Heartbeat + # def call(env) + # [200, { "content-type" => "text/plain" }, ["OK"]] + # end + # end + # + # app = Rack::Builder.app do # map '/heartbeat' do - # run Heartbeat + # run Heartbeat.new # end - # run App + # run App.new # end # + # run app + # # The +use+ method can also be used inside the block to specify middleware to run under a specific path: # - # Rack::Builder.app do + # app = Rack::Builder.app do # map '/heartbeat' do # use Middleware - # run Heartbeat + # run Heartbeat.new # end - # run App + # run App.new # end # # This example includes a piece of middleware which will run before +/heartbeat+ requests hit +Heartbeat+. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/constants.rb new/lib/rack/constants.rb --- old/lib/rack/constants.rb 2022-09-06 18:28:21.000000000 +0200 +++ new/lib/rack/constants.rb 2022-12-05 06:12:56.000000000 +0100 @@ -14,7 +14,7 @@ SERVER_NAME = 'SERVER_NAME' SERVER_PORT = 'SERVER_PORT' HTTP_COOKIE = 'HTTP_COOKIE' - + # Response Header Keys CACHE_CONTROL = 'cache-control' CONTENT_LENGTH = 'content-length' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/headers.rb new/lib/rack/headers.rb --- old/lib/rack/headers.rb 2022-09-06 18:28:21.000000000 +0200 +++ new/lib/rack/headers.rb 2022-12-05 06:12:56.000000000 +0100 @@ -31,7 +31,7 @@ super(key.downcase.freeze, value) end alias store []= - + def assoc(key) super(downcase_key(key)) end @@ -43,7 +43,7 @@ def delete(key) super(downcase_key(key)) end - + def dig(key, *a) super(downcase_key(key), *a) end @@ -52,7 +52,7 @@ key = downcase_key(key) super end - + def fetch_values(*a) super(*a.map!{|key| downcase_key(key)}) end @@ -63,34 +63,34 @@ alias include? has_key? alias key? has_key? alias member? has_key? - + def invert hash = self.class.new each{|key, value| hash[value] = key} hash end - + def merge(hash, &block) dup.merge!(hash, &block) end - + def reject(&block) hash = dup hash.reject!(&block) hash end - + def replace(hash) clear update(hash) end - + def select(&block) hash = dup hash.select!(&block) hash end - + def to_proc lambda{|x| self[x]} end @@ -100,10 +100,10 @@ end def update(hash, &block) - hash.each do |key, value| + hash.each do |key, value| self[key] = if block_given? && include?(key) block.call(key, self[key], value) - else + else value end end @@ -114,7 +114,7 @@ def values_at(*keys) keys.map{|key| self[key]} end - + # :nocov: if RUBY_VERSION >= '2.5' # :nocov: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/lint.rb new/lib/rack/lint.rb --- old/lib/rack/lint.rb 2022-09-06 18:28:21.000000000 +0200 +++ new/lib/rack/lint.rb 2022-12-05 06:12:56.000000000 +0100 @@ -629,7 +629,7 @@ unless headers.kind_of?(Hash) raise LintError, "headers object should be a hash, but isn't (got #{headers.class} as headers)" end - + if headers.frozen? raise LintError, "headers object should not be frozen, but is" end @@ -817,8 +817,14 @@ verify_to_path end + BODY_METHODS = {to_ary: true, each: true, call: true, to_path: true} + + def to_path + @body.to_path + end + def respond_to?(name, *) - if name == :to_ary + if BODY_METHODS.key?(name) @body.respond_to?(name) else super @@ -883,7 +889,7 @@ def initialize(stream) @stream = stream - + REQUIRED_METHODS.each do |method_name| raise LintError, "Stream must respond to #{method_name}" unless stream.respond_to?(method_name) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/method_override.rb new/lib/rack/method_override.rb --- old/lib/rack/method_override.rb 2022-09-06 18:28:21.000000000 +0200 +++ new/lib/rack/method_override.rb 2022-12-05 06:12:56.000000000 +0100 @@ -46,7 +46,7 @@ end def method_override_param(req) - req.POST[METHOD_OVERRIDE_PARAM_KEY] + req.POST[METHOD_OVERRIDE_PARAM_KEY] if req.form_data? || req.parseable_data? rescue Utils::InvalidParameterError, Utils::ParameterTypeError req.get_header(RACK_ERRORS).puts "Invalid or incomplete POST params" rescue EOFError diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/request.rb new/lib/rack/request.rb --- old/lib/rack/request.rb 2022-09-06 18:28:21.000000000 +0200 +++ new/lib/rack/request.rb 2022-12-05 06:12:56.000000000 +0100 @@ -44,7 +44,7 @@ @x_forwarded_proto_priority = [:proto, :scheme] valid_ipv4_octet = /\.(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])/ - + trusted_proxies = Regexp.union( /\A127#{valid_ipv4_octet}{3}\z/, # localhost IPv4 range 127.x.x.x, per RFC-3330 /\A::1\z/, # localhost IPv6 ::1 @@ -54,7 +54,7 @@ /\A192\.168#{valid_ipv4_octet}{2}\z/, # private IPv4 range 192.168.x.x /\Alocalhost\z|\Aunix(\z|:)/i, # localhost hostname, and unix domain sockets ) - + self.ip_filter = lambda { |ip| trusted_proxies.match?(ip) } ALLOWED_SCHEMES = %w(https http wss ws).freeze diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/response.rb new/lib/rack/response.rb --- old/lib/rack/response.rb 2022-09-06 18:28:21.000000000 +0200 +++ new/lib/rack/response.rb 2022-12-05 06:12:56.000000000 +0100 @@ -43,7 +43,7 @@ # # If the +body+ is +nil+, construct an empty response object with internal # buffering. - # + # # If the +body+ responds to +to_str+, assume it's a string-like object and # construct a buffered response object containing using that string as the # initial contents of the buffer. @@ -102,11 +102,16 @@ CHUNKED == get_header(TRANSFER_ENCODING) end + def no_entity_body? + # The response body is an enumerable body and it is not allowed to have an entity body. + @body.respond_to?(:each) && STATUS_WITH_NO_ENTITY_BODY[@status] + end + # Generate a response array consistent with the requirements of the SPEC. # @return [Array] a 3-tuple suitable of `[status, headers, body]` # which is suitable to be returned from the middleware `#call(env)` method. def finish(&block) - if STATUS_WITH_NO_ENTITY_BODY[@status] + if no_entity_body? delete_header CONTENT_TYPE delete_header CONTENT_LENGTH close @@ -333,7 +338,7 @@ end body.close if body.respond_to?(:close) - + @buffered = true else @buffered = false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/utils.rb new/lib/rack/utils.rb --- old/lib/rack/utils.rb 2022-09-06 18:28:21.000000000 +0200 +++ new/lib/rack/utils.rb 2022-12-05 06:12:56.000000000 +0100 @@ -121,13 +121,13 @@ }.join("&") when Hash value.map { |k, v| - build_nested_query(v, prefix ? "#{prefix}[#{escape(k)}]" : escape(k)) + build_nested_query(v, prefix ? "#{prefix}[#{k}]" : k) }.delete_if(&:empty?).join('&') when nil - prefix + escape(prefix) else raise ArgumentError, "value must be a Hash" if prefix.nil? - "#{prefix}=#{escape(value)}" + "#{escape(prefix)}=#{escape(value)}" end end @@ -278,7 +278,7 @@ # If the cookie +value+ is an instance of +Hash+, it considers the following # cookie attribute keys: +domain+, +max_age+, +expires+ (must be instance # of +Time+), +secure+, +http_only+, +same_site+ and +value+. For more - # details about the interpretation of these fields, consult + # details about the interpretation of these fields, consult # [RFC6265 Section 5.2](https://datatracker.ietf.org/doc/html/rfc6265#section-5.2). # # An extra cookie attribute +escape_key+ can be provided to control whether diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/version.rb new/lib/rack/version.rb --- old/lib/rack/version.rb 2022-09-06 18:28:21.000000000 +0200 +++ new/lib/rack/version.rb 2022-12-05 06:12:56.000000000 +0100 @@ -25,7 +25,7 @@ VERSION end - RELEASE = "3.0.0" + RELEASE = "3.0.2" # Return the Rack release as a dotted string. def self.release diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2022-09-06 18:28:21.000000000 +0200 +++ new/metadata 2022-12-05 06:12:56.000000000 +0100 @@ -1,14 +1,14 @@ --- !ruby/object:Gem::Specification name: rack version: !ruby/object:Gem::Version - version: 3.0.0 + version: 3.0.2 platform: ruby authors: - Leah Neukirchen autorequire: bindir: bin cert_chain: [] -date: 2022-09-06 00:00:00.000000000 Z +date: 2022-12-05 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: minitest @@ -164,7 +164,7 @@ - !ruby/object:Gem::Version version: '0' requirements: [] -rubygems_version: 3.3.3 +rubygems_version: 3.3.7 signing_key: specification_version: 4 summary: A modular Ruby webserver interface.