Module: Supabase::Storage::Utils

Defined in:
lib/supabase/storage/utils.rb

Class Method Summary collapse

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