about summary refs log tree commit diff
path: root/lib/paperclip/url_generator_extensions.rb
diff options
context:
space:
mode:
authorThibaut Girka <thib@sitedethib.com>2020-03-27 21:54:44 +0100
committerThibaut Girka <thib@sitedethib.com>2020-03-27 21:54:44 +0100
commit7b435fd9bf81265241fab792d8e8e0c2f4f1b619 (patch)
treeef366f436ed5180489cc9377268e10328fe9a932 /lib/paperclip/url_generator_extensions.rb
parent02f1c04fabab221130de8dfb5611be81825b193b (diff)
parent6c79b7237e31eb510af7df3f4f2cb133dea39845 (diff)
Merge branch 'master' into glitch-soc/merge-upstream
Conflicts:
- `app/services/post_status_service.rb`:
  CW/sensitive logic fixed upstream, but different in glitch-soc.
  Ported the changes accordingly.
Diffstat (limited to 'lib/paperclip/url_generator_extensions.rb')
-rw-r--r--lib/paperclip/url_generator_extensions.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/paperclip/url_generator_extensions.rb b/lib/paperclip/url_generator_extensions.rb
new file mode 100644
index 000000000..1079efdbc
--- /dev/null
+++ b/lib/paperclip/url_generator_extensions.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+module Paperclip
+  module UrlGeneratorExtensions
+    # Monkey-patch Paperclip to use Addressable::URI's normalization instead
+    # of the long-deprecated URI.esacpe
+    def escape_url(url)
+      if url.respond_to?(:escape)
+        url.escape
+      else
+        Addressable::URI.parse(url).normalize.to_str.gsub(escape_regex) { |m| "%#{m.ord.to_s(16).upcase}" }
+      end
+    end
+  end
+end
+
+Paperclip::UrlGenerator.prepend(Paperclip::UrlGeneratorExtensions)