Module: Supabase::Storage::Utils
- Defined in:
- lib/supabase/storage/utils.rb
Class Method Summary collapse
-
.encode_segments(parts) ⇒ Object
URL-encode each path segment so user-supplied filenames don’t break the URL.
-
.join_url(base_url, segments, query = nil) ⇒ Object
Join the (already-trailing-slashed) base URL with the given path segments and an optional query Hash.
-
.relative_path_to_parts(path) ⇒ Object
Splits a relative storage path into its path segments, dropping a leading ‘/` if the caller supplied one.
Class Method Details
.encode_segments(parts) ⇒ Object
URL-encode each path segment so user-supplied filenames don’t break the URL.
20 21 22 |
# File 'lib/supabase/storage/utils.rb', line 20 def encode_segments(parts) parts.map { |p| URI.encode_www_form_component(p) } end |
.join_url(base_url, segments, query = nil) ⇒ Object
Join the (already-trailing-slashed) base URL with the given path segments and an optional query Hash. Used so ‘_request` never has to concat strings by hand.
26 27 28 29 30 31 32 |
# File 'lib/supabase/storage/utils.rb', line 26 def join_url(base_url, segments, query = nil) path = encode_segments(segments).join("/") url = "#{base_url.chomp('/')}/#{path}" return url if query.nil? || query.empty? "#{url}?#{URI.encode_www_form(query)}" end |
.relative_path_to_parts(path) ⇒ Object
Splits a relative storage path into its path segments, dropping a leading ‘/` if the caller supplied one. Mirrors storage3.utils.relative_path_to_parts.
relative_path_to_parts("folder/avatar.png") # => ["folder", "avatar.png"]
relative_path_to_parts("/folder/x.png") # => ["folder", "x.png"]
15 16 17 |
# File 'lib/supabase/storage/utils.rb', line 15 def relative_path_to_parts(path) path.to_s.split("/").reject(&:empty?) end |