diff options
Diffstat (limited to 'app/lib')
-rw-r--r-- | app/lib/activitypub/activity.rb | 2 | ||||
-rw-r--r-- | app/lib/formatter.rb | 5 | ||||
-rw-r--r-- | app/lib/request.rb | 6 | ||||
-rw-r--r-- | app/lib/sanitize_config.rb | 2 |
4 files changed, 9 insertions, 6 deletions
diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb index 49b1dc9cd..ee35e1e8d 100644 --- a/app/lib/activitypub/activity.rb +++ b/app/lib/activitypub/activity.rb @@ -21,7 +21,7 @@ class ActivityPub::Activity class << self def factory(json, account, **options) @json = json - klass&.new(json, account, options) + klass&.new(json, account, **options) end private diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb index 9159db2a1..36cdae9f7 100644 --- a/app/lib/formatter.rb +++ b/app/lib/formatter.rb @@ -308,8 +308,9 @@ class Formatter end standard = Extractor.extract_entities_with_indices(text, options) + xmpp = Extractor.extract_xmpp_uris_with_indices(text, options) - Extractor.remove_overlapping_entities(special + standard) + Extractor.remove_overlapping_entities(special + standard + xmpp) end def html_friendly_extractor(html, options = {}) @@ -370,7 +371,7 @@ class Formatter def link_html(url) url = Addressable::URI.parse(url).to_s - prefix = url.match(/\Ahttps?:\/\/(www\.)?/).to_s + prefix = url.match(/\A(https?:\/\/(www\.)?|xmpp:)/).to_s text = url[prefix.length, 30] suffix = url[prefix.length + 30..-1] cutoff = url[prefix.length..-1].length > 30 diff --git a/app/lib/request.rb b/app/lib/request.rb index 42ccc6513..c476e7785 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -59,7 +59,7 @@ class Request begin response = http_client.public_send(@verb, @url.to_s, @options.merge(headers: headers)) rescue => e - raise e.class, "#{e.message} on #{@url}", e.backtrace + raise e.class, "#{e.message} on #{@url}", e.backtrace[0] end begin @@ -73,6 +73,8 @@ class Request response.body_with_limit if http_client.persistent? yield response if block_given? + rescue => e + raise e.class, e.message, e.backtrace[0] ensure http_client.close unless http_client.persistent? end @@ -94,7 +96,7 @@ class Request end def http_client - HTTP.use(:auto_inflate).timeout(:per_operation, TIMEOUT.dup).follow(max_hops: 2) + HTTP.use(:auto_inflate).timeout(TIMEOUT.dup).follow(max_hops: 2) end end diff --git a/app/lib/sanitize_config.rb b/app/lib/sanitize_config.rb index 9f5bf0125..3554d34b9 100644 --- a/app/lib/sanitize_config.rb +++ b/app/lib/sanitize_config.rb @@ -2,7 +2,7 @@ class Sanitize module Config - HTTP_PROTOCOLS ||= ['http', 'https', 'dat', 'dweb', 'ipfs', 'ipns', 'ssb', 'gopher', :relative].freeze + HTTP_PROTOCOLS ||= ['http', 'https', 'dat', 'dweb', 'ipfs', 'ipns', 'ssb', 'gopher', 'xmpp', :relative].freeze CLASS_WHITELIST_TRANSFORMER = lambda do |env| node = env[:node] |