New Upstream Release - ruby-http-form-data

Ready changes

Summary

Merged new upstream version: 2.3.0 (was: 2.2.0).

Resulting package

Built on 2022-03-16T13:52 (took 1m57s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-releases ruby-http-form-data

Lintian Result

Diff

diff --git a/CHANGES.md b/CHANGES.md
index 22054d0..36459c7 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,10 @@
+## 2.3.0 (2020-03-08)
+
+* [#29](https://github.com/httprb/form_data/pull/29)
+  Enhance HTTP::FormData::Urlencoded with per-instance encoder.
+  [@summera][]
+
+
 ## 2.2.0 (2020-01-09)
 
 * [#28](https://github.com/httprb/form_data/pull/28)
@@ -86,3 +93,4 @@
 [@mhickman]: https://github.com/mhickman
 [@HoneyryderChuck]: https://github.com/HoneyryderChuck
 [@FabienChaynes]: https://github.com/FabienChaynes
+[@summera]: https://github.com/summera
diff --git a/debian/changelog b/debian/changelog
index ab9a13f..8d1b44e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,12 +1,13 @@
-ruby-http-form-data (2.2.0-2) UNRELEASED; urgency=medium
+ruby-http-form-data (2.3.0-1) UNRELEASED; urgency=medium
 
   * Set field Upstream-Contact in debian/copyright.
   * Remove obsolete fields Contact, Name from debian/upstream/metadata
     (already present in machine-readable debian/copyright).
   * Apply multi-arch hints.
     + ruby-http-form-data: Add Multi-Arch: foreign.
+  * New upstream release.
 
- -- Debian Janitor <janitor@jelmer.uk>  Sun, 15 Mar 2020 04:47:14 +0000
+ -- Debian Janitor <janitor@jelmer.uk>  Wed, 16 Mar 2022 13:51:08 -0000
 
 ruby-http-form-data (2.2.0-1) unstable; urgency=medium
 
diff --git a/lib/http/form_data.rb b/lib/http/form_data.rb
index be542bc..e993161 100644
--- a/lib/http/form_data.rb
+++ b/lib/http/form_data.rb
@@ -41,11 +41,14 @@ module HTTP
       # @param [#to_h, Hash] data
       # @return [Multipart] if any of values is a {FormData::File}
       # @return [Urlencoded] otherwise
-      def create(data)
-        data  = ensure_hash data
-        klass = multipart?(data) ? Multipart : Urlencoded
+      def create(data, encoder: nil)
+        data = ensure_hash data
 
-        klass.new data
+        if multipart?(data)
+          Multipart.new(data)
+        else
+          Urlencoded.new(data, :encoder => encoder)
+        end
       end
 
       # Coerce `obj` to Hash.
diff --git a/lib/http/form_data/urlencoded.rb b/lib/http/form_data/urlencoded.rb
index dc47b94..9ebcaf0 100644
--- a/lib/http/form_data/urlencoded.rb
+++ b/lib/http/form_data/urlencoded.rb
@@ -63,8 +63,9 @@ module HTTP
       end
 
       # @param [#to_h, Hash] data form data key-value Hash
-      def initialize(data)
-        @io = StringIO.new(self.class.encoder.call(FormData.ensure_hash(data)))
+      def initialize(data, encoder: nil)
+        encoder ||= self.class.encoder
+        @io = StringIO.new(encoder.call(FormData.ensure_hash(data)))
       end
 
       # Returns MIME type to be used for HTTP request `Content-Type` header.
diff --git a/lib/http/form_data/version.rb b/lib/http/form_data/version.rb
index 7e997c0..0a3d78f 100644
--- a/lib/http/form_data/version.rb
+++ b/lib/http/form_data/version.rb
@@ -3,6 +3,6 @@
 module HTTP
   module FormData
     # Gem version.
-    VERSION = "2.2.0"
+    VERSION = "2.3.0"
   end
 end
diff --git a/spec/lib/http/form_data/urlencoded_spec.rb b/spec/lib/http/form_data/urlencoded_spec.rb
index a3de752..649e3b6 100644
--- a/spec/lib/http/form_data/urlencoded_spec.rb
+++ b/spec/lib/http/form_data/urlencoded_spec.rb
@@ -64,4 +64,15 @@ RSpec.describe HTTP::FormData::Urlencoded do
       expect(form_data.to_s).to eq('{"foo[bar]":"test"}')
     end
   end
+
+  context "with custom instance level encoder" do
+    let(:encoder) { proc { |data| ::JSON.dump(data) } }
+    subject(:form_data) do
+      HTTP::FormData::Urlencoded.new(data, :encoder => encoder)
+    end
+
+    it "uses encoder passed to initializer" do
+      expect(form_data.to_s).to eq('{"foo[bar]":"test"}')
+    end
+  end
 end

More details

Full run details