Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package perl-Mojolicious-Plugin-OpenAPI for 
openSUSE:Factory checked in at 2026-06-15 19:50:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Mojolicious-Plugin-OpenAPI (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Mojolicious-Plugin-OpenAPI.new.1981 
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Mojolicious-Plugin-OpenAPI"

Mon Jun 15 19:50:05 2026 rev:2 rq:1359508 version:5.120.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/perl-Mojolicious-Plugin-OpenAPI/perl-Mojolicious-Plugin-OpenAPI.changes
  2025-09-10 20:23:00.947175573 +0200
+++ 
/work/SRC/openSUSE:Factory/.perl-Mojolicious-Plugin-OpenAPI.new.1981/perl-Mojolicious-Plugin-OpenAPI.changes
        2026-06-15 19:53:36.524992579 +0200
@@ -1,0 +2,10 @@
+Sun Jun  7 00:40:58 UTC 2026 - Tina Müller <[email protected]>
+
+- updated to 5.120.0 (5.12)
+   see /usr/share/doc/packages/perl-Mojolicious-Plugin-OpenAPI/Changes
+
+  5.12 2026-06-06T21:34:00
+   - Combine body_params and uploads on multipart/form-data requests #267
+     Contributor: Archey Barrell
+
+-------------------------------------------------------------------

Old:
----
  Mojolicious-Plugin-OpenAPI-5.11.tar.gz

New:
----
  Mojolicious-Plugin-OpenAPI-5.12.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Mojolicious-Plugin-OpenAPI.spec ++++++
--- /var/tmp/diff_new_pack.17PcOT/_old  2026-06-15 19:53:38.025055491 +0200
+++ /var/tmp/diff_new_pack.17PcOT/_new  2026-06-15 19:53:38.029055658 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package perl-Mojolicious-Plugin-OpenAPI
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,10 +18,10 @@
 
 %define cpan_name Mojolicious-Plugin-OpenAPI
 Name:           perl-Mojolicious-Plugin-OpenAPI
-Version:        5.110.0
+Version:        5.120.0
 Release:        0
-# 5.11 -> normalize -> 5.110.0
-%define cpan_version 5.11
+# 5.12 -> normalize -> 5.120.0
+%define cpan_version 5.12
 License:        Artistic-2.0
 Summary:        OpenAPI / Swagger plugin for Mojolicious
 URL:            https://metacpan.org/release/%{cpan_name}
@@ -30,10 +30,10 @@
 BuildArch:      noarch
 BuildRequires:  perl
 BuildRequires:  perl-macros
-BuildRequires:  perl(JSON::Validator) >= 5.130
+BuildRequires:  perl(JSON::Validator) >= 5.170
 BuildRequires:  perl(Mojolicious) >= 9.0
 BuildRequires:  perl(Test::More) >= 0.88
-Requires:       perl(JSON::Validator) >= 5.130
+Requires:       perl(JSON::Validator) >= 5.170
 Requires:       perl(Mojolicious) >= 9.0
 Provides:       perl(Mojolicious::Plugin::OpenAPI) = %{version}
 Provides:       perl(Mojolicious::Plugin::OpenAPI::Cors)

++++++ Mojolicious-Plugin-OpenAPI-5.11.tar.gz -> 
Mojolicious-Plugin-OpenAPI-5.12.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-Plugin-OpenAPI-5.11/Changes 
new/Mojolicious-Plugin-OpenAPI-5.12/Changes
--- old/Mojolicious-Plugin-OpenAPI-5.11/Changes 2025-03-18 15:27:40.000000000 
+0100
+++ new/Mojolicious-Plugin-OpenAPI-5.12/Changes 2026-06-06 14:36:21.000000000 
+0200
@@ -1,5 +1,9 @@
 Revision history for perl distribution Mojolicious-Plugin-OpenAPI
 
+5.12 2026-06-06T21:34:00
+ - Combine body_params and uploads on multipart/form-data requests #267
+   Contributor: Archey Barrell
+
 5.11 2025-03-18T23:24:00
  - Fix bad commit from Github
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-Plugin-OpenAPI-5.11/MANIFEST 
new/Mojolicious-Plugin-OpenAPI-5.12/MANIFEST
--- old/Mojolicious-Plugin-OpenAPI-5.11/MANIFEST        2025-03-18 
15:27:55.000000000 +0100
+++ new/Mojolicious-Plugin-OpenAPI-5.12/MANIFEST        2026-06-06 
14:36:37.000000000 +0200
@@ -69,6 +69,7 @@
 t/v3-file.t
 t/v3-invalid_file_refs.t
 t/v3-invalid_file_refs_no_path.t
+t/v3-multipart.t
 t/v3-nullable.t
 t/v3-style-array.t
 t/v3-style-object.t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-Plugin-OpenAPI-5.11/META.json 
new/Mojolicious-Plugin-OpenAPI-5.12/META.json
--- old/Mojolicious-Plugin-OpenAPI-5.11/META.json       2025-03-18 
15:27:54.000000000 +0100
+++ new/Mojolicious-Plugin-OpenAPI-5.12/META.json       2026-06-06 
14:36:37.000000000 +0200
@@ -37,7 +37,7 @@
             "Text::Markdown" : "v1.0.31"
          },
          "requires" : {
-            "JSON::Validator" : "5.13",
+            "JSON::Validator" : "5.17",
             "Mojolicious" : "9.00",
             "perl" : "5.016"
          }
@@ -67,7 +67,7 @@
          "web" : "https://web.libera.chat/#perl-openapi";
       }
    },
-   "version" : "5.11",
+   "version" : "5.12",
    "x_contributors" : [
       "Bernhard Graf <[email protected]>",
       "Doug Bell <[email protected]>",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-Plugin-OpenAPI-5.11/META.yml 
new/Mojolicious-Plugin-OpenAPI-5.12/META.yml
--- old/Mojolicious-Plugin-OpenAPI-5.11/META.yml        2025-03-18 
15:27:54.000000000 +0100
+++ new/Mojolicious-Plugin-OpenAPI-5.12/META.yml        2026-06-06 
14:36:37.000000000 +0200
@@ -23,7 +23,7 @@
 recommends:
   Text::Markdown: v1.0.31
 requires:
-  JSON::Validator: '5.13'
+  JSON::Validator: '5.17'
   Mojolicious: '9.00'
   perl: '5.016'
 resources:
@@ -34,7 +34,7 @@
   homepage: https://github.com/jhthorsen/mojolicious-plugin-openapi
   license: http://www.opensource.org/licenses/artistic-license-2.0
   repository: https://github.com/jhthorsen/mojolicious-plugin-openapi.git
-version: '5.11'
+version: '5.12'
 x_contributors:
   - 'Bernhard Graf <[email protected]>'
   - 'Doug Bell <[email protected]>'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-Plugin-OpenAPI-5.11/Makefile.PL 
new/Mojolicious-Plugin-OpenAPI-5.12/Makefile.PL
--- old/Mojolicious-Plugin-OpenAPI-5.11/Makefile.PL     2025-03-18 
15:27:40.000000000 +0100
+++ new/Mojolicious-Plugin-OpenAPI-5.12/Makefile.PL     2026-06-06 
14:36:21.000000000 +0200
@@ -12,7 +12,7 @@
   ABSTRACT_FROM => 'lib/Mojolicious/Plugin/OpenAPI.pm',
   VERSION_FROM  => 'lib/Mojolicious/Plugin/OpenAPI.pm',
   TEST_REQUIRES => {'Test::More'      => '0.88'},
-  PREREQ_PM     => {'JSON::Validator' => '5.13', 'Mojolicious' => '9.00'},
+  PREREQ_PM     => {'JSON::Validator' => '5.17', 'Mojolicious' => '9.00'},
   META_MERGE    => {
     'dynamic_config' => 0,
     'meta-spec'      => {version   => 2},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Mojolicious-Plugin-OpenAPI-5.11/lib/Mojolicious/Plugin/OpenAPI/Parameters.pm
 
new/Mojolicious-Plugin-OpenAPI-5.12/lib/Mojolicious/Plugin/OpenAPI/Parameters.pm
--- 
old/Mojolicious-Plugin-OpenAPI-5.11/lib/Mojolicious/Plugin/OpenAPI/Parameters.pm
    2025-03-18 15:27:54.000000000 +0100
+++ 
new/Mojolicious-Plugin-OpenAPI-5.12/lib/Mojolicious/Plugin/OpenAPI/Parameters.pm
    2026-06-06 14:36:36.000000000 +0200
@@ -127,9 +127,21 @@
 
   eval {
     $res->{value} //= $c->req->body_params->to_hash
-      if grep { $content_type eq $_ } qw(application/x-www-form-urlencoded 
multipart/form-data);
+      if $content_type =~ /^application\/x-www-form-urlencoded\s*(;|$)/i;
 
-    # Trying to use the already parsed json() or fallback to manually decoding 
the request
+    if ($content_type =~ /^multipart\/form-data\s*(;|$)/i) {
+      # body_params only includes non-file parameters, so we need to fetch the
+      # uploads separately and append them as Mojo::Upload objects.
+      #
+      # we also have to clone body_params before we merge in the file uploads
+      # because it's used as a cache by other helpers that expect it to
+      # only contain body parameters
+      my $params = $c->req->body_params->clone;
+      $params->append($_->name => $_) for @{$c->req->uploads};
+      $res->{value} = $params->to_hash;
+    }
+
+    # Try to use the already parsed json() or fallback to manually decoding 
the request
     # since it will make the eval {} fail on invalid json.
     $res->{value} //= $c->req->json // decode_json $c->req->body;
     1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Mojolicious-Plugin-OpenAPI-5.11/lib/Mojolicious/Plugin/OpenAPI.pm 
new/Mojolicious-Plugin-OpenAPI-5.12/lib/Mojolicious/Plugin/OpenAPI.pm
--- old/Mojolicious-Plugin-OpenAPI-5.11/lib/Mojolicious/Plugin/OpenAPI.pm       
2025-03-18 15:27:54.000000000 +0100
+++ new/Mojolicious-Plugin-OpenAPI-5.12/lib/Mojolicious/Plugin/OpenAPI.pm       
2026-06-06 14:36:36.000000000 +0200
@@ -8,7 +8,7 @@
 
 use constant DEBUG => $ENV{MOJO_OPENAPI_DEBUG} || 0;
 
-our $VERSION = '5.11';
+our $VERSION = '5.12';
 
 has route     => sub {undef};
 has validator => sub { JSON::Validator::Schema->new; };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-Plugin-OpenAPI-5.11/t/v3-file.t 
new/Mojolicious-Plugin-OpenAPI-5.12/t/v3-file.t
--- old/Mojolicious-Plugin-OpenAPI-5.11/t/v3-file.t     2025-03-18 
15:27:40.000000000 +0100
+++ new/Mojolicious-Plugin-OpenAPI-5.12/t/v3-file.t     2026-06-06 
14:36:21.000000000 +0200
@@ -23,6 +23,14 @@
   form => {id => 1, image => {file => $image}}
 )->content_like(qr{"size"})->status_is(200);
 
+$image = Mojo::Asset::Memory->new->add_chunk('smileyface');
+$t->post_ok(
+  '/api/upload',
+  {Accept => 'application/json'},
+  form => {id => 1, image => [{file => $image}, 'unhappy face']}
+)->status_is(400)
+  ->json_is('/errors/0', {message => 'Expected string - got array.', path => 
'/body/image'});
+
 done_testing;
 
 __DATA__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-Plugin-OpenAPI-5.11/t/v3-multipart.t 
new/Mojolicious-Plugin-OpenAPI-5.12/t/v3-multipart.t
--- old/Mojolicious-Plugin-OpenAPI-5.11/t/v3-multipart.t        1970-01-01 
01:00:00.000000000 +0100
+++ new/Mojolicious-Plugin-OpenAPI-5.12/t/v3-multipart.t        2026-06-06 
14:36:21.000000000 +0200
@@ -0,0 +1,222 @@
+use Mojo::Base -strict;
+use Test::Mojo;
+use Test::More;
+
+use Mojolicious::Lite;
+
+post '/formdata' => sub {
+    my $c = shift;
+    $c->openapi->valid_input or return;
+
+    my $name = $c->param('name');
+
+    $c->render(json => {name => $name}, status => 200);
+  },
+  'formdata';
+
+post '/formdata_array' => sub {
+    my $c = shift;
+    $c->openapi->valid_input or return;
+
+    my $names = $c->req->body_params->every_param('name');
+
+    $c->render(json => {name => $names, count => scalar @$names}, status => 
200);
+  },
+  'formdata_array';
+
+post '/upload' => sub {
+  my $c = shift;
+  $c->openapi->valid_input or return;
+
+  $c->render(openapi => {size => $c->req->upload('image')->size});
+  },
+  'upload';
+
+post '/upload_array' => sub {
+  my $c = shift;
+  $c->openapi->valid_input or return;
+
+  my $sizes = [map { $_->size } @{$c->req->every_upload('image')}];
+
+  $c->render(openapi => {size => $sizes, count => scalar @$sizes});
+  },
+  'upload_array';
+
+plugin OpenAPI => {url => 'data://main/openapi.yaml'};
+
+my $t = Test::Mojo->new;
+
+# Basic data validation
+
+$t->post_ok('/api/formdata', {'Content-Type' => 'application/json'}, json => 
{foo => 42})
+  ->status_is(400)
+  ->json_is('/errors/0', {message => 'Expected multipart/form-data - got 
application/json.', path => '/body'});
+
+$t->post_ok('/api/formdata', {'Content-Type' => 'multipart/form-data'}, form 
=> {foo => 42})
+  ->status_is(400)
+  ->json_is('/errors/0', {message => 'Missing property.', path => 
'/body/name'});
+
+$t->post_ok('/api/formdata', {'Content-Type' => 'multipart/form-data'}, form 
=> {name => 'John'})
+  ->status_is(200)
+  ->json_is('/name', 'John');
+
+$t->post_ok('/api/formdata', {'Content-Type' => 'multipart/form-data'}, form 
=> {name => ['John', 'Jane']})
+  ->status_is(400)
+  ->json_is('/errors/0', {message => 'Expected string - got array.', path => 
'/body/name'});
+
+$t->post_ok('/api/formdata_array', {'Content-Type' => 'multipart/form-data'}, 
form => {name => 'John'})
+  ->status_is(200)
+  ->json_is('/name', ['John'])
+  ->json_is('/count', 1);
+
+$t->post_ok('/api/formdata_array', {'Content-Type' => 'multipart/form-data'}, 
form => {name => ['John', 'Jane']})
+  ->status_is(200)
+  ->json_is('/name', ['John', 'Jane'])
+  ->json_is('/count', 2);
+
+# File upload
+
+my $image = Mojo::Asset::Memory->new->add_chunk('smileyface');
+
+$t->post_ok('/api/upload', {'Content-Type' => 'multipart/form-data'}, form => 
{image => {file => $image}})
+  ->status_is(200)
+  ->json_has('/size');
+
+$t->post_ok('/api/upload', {'Content-Type' => 'multipart/form-data'}, form => 
{picture => {file => $image}})
+  ->status_is(400)
+  ->json_is('/errors/0', {message => 'Missing property.', path => 
'/body/image'});
+
+$t->post_ok('/api/upload', {'Content-Type' => 'multipart/form-data'}, form => 
{image => [{file => $image}, {file => $image}]})
+  ->status_is(400)
+  ->json_is('/errors/0', {message => 'Expected string - got array.', path => 
'/body/image'});
+
+$t->post_ok('/api/upload_array', {'Content-Type' => 'multipart/form-data'}, 
form => {image => {file => $image}})
+  ->status_is(200)
+  ->json_has('/size')
+  ->json_is('/count', 1);
+
+$t->post_ok('/api/upload_array', {'Content-Type' => 'multipart/form-data'}, 
form => {image => [{file => $image}, {file => $image}]})
+  ->status_is(200)
+  ->json_has('/size')
+  ->json_is('/count', 2);
+
+done_testing;
+
+__DATA__
+@@ openapi.yaml
+---
+openapi: 3.0.0
+info:
+  title: Upload test
+  version: 1.0.0
+servers:
+- url: http://example.com/api
+paths:
+  /formdata:
+    post:
+      x-mojo-name: formdata
+      requestBody:
+        required: true
+        content:
+          multipart/form-data:
+            schema:
+              type: object
+              properties:
+                name:
+                  type: string
+              required:
+                - name
+      responses:
+        200:
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                required: [ name ]
+                properties:
+                  name:
+                    type: string
+  /formdata_array:
+    post:
+      x-mojo-name: formdata_array
+      requestBody:
+        required: true
+        content:
+          multipart/form-data:
+            schema:
+              type: object
+              properties:
+                name:
+                  type: array
+                  items:
+                    type: string
+              required:
+                - name
+      responses:
+        200:
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                required: [ name ]
+                properties:
+                  name:
+                    type: array
+                    items:
+                      type: string
+                  count:
+                    type: integer
+  /upload:
+    post:
+      operationId: upload
+      requestBody:
+        required: true
+        content:
+          multipart/form-data:
+            schema:
+              type: object
+              required: [ image ]
+              properties:
+                image:
+                  type: string
+                  format: binary
+      responses:
+        200:
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                required: [ size ]
+                properties:
+                  size:
+                    type: integer
+  /upload_array:
+    post:
+      operationId: upload_array
+      requestBody:
+        required: true
+        content:
+          multipart/form-data:
+            schema:
+              type: object
+              required: [ image ]
+              properties:
+                image:
+                  type: array
+                  items:
+                    type: string
+                    format: binary
+      responses:
+        200:
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                required: [ size ]
+                properties:
+                  size:
+                    type: array
+                    items:
+                      type: integer
+                  count:
+                    type: integer
\ No newline at end of file

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.17PcOT/_old  2026-06-15 19:53:38.273065892 +0200
+++ /var/tmp/diff_new_pack.17PcOT/_new  2026-06-15 19:53:38.285066395 +0200
@@ -1,6 +1,6 @@
-mtime: 1755015337
-commit: f7712c169d6f7a2d18935c9b91642cdf00231ceafc9ae16b4921ae6b2f273c56
-url: https://src.opensuse.org/perl/perl-Mojolicious-Plugin-OpenAPI.git
-revision: f7712c169d6f7a2d18935c9b91642cdf00231ceafc9ae16b4921ae6b2f273c56
+mtime: 1780792858
+commit: f32cab17df3e90a9905f5cb65d221b57b76138dbeb69227fdb2e2134b728c47f
+url: https://src.opensuse.org/perl/perl-Mojolicious-Plugin-OpenAPI
+revision: f32cab17df3e90a9905f5cb65d221b57b76138dbeb69227fdb2e2134b728c47f
 projectscmsync: https://src.opensuse.org/perl/_ObsPrj
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-06-07 02:40:58.000000000 +0200
@@ -0,0 +1 @@
+.osc

Reply via email to