class AzureBlob::SharedKeySigner

def sas_token(uri, options = {})

def sas_token(uri, options = {})
  if remove_prefix
    uri = uri.clone
    uri.path = uri.path.delete_prefix("/#{account_name}")
  end
  to_sign = [
    options[:permissions],
    options[:start],
    options[:expiry],
    CanonicalizedResource.new(uri, account_name, url_safe: false, service_name: :blob),
    options[:identifier],
    options[:ip],
    options[:protocol],
    SAS::Version,
    SAS::Resources::Blob,
    nil,
    nil,
    nil,
    options[:content_disposition],
    nil,
    nil,
    options[:content_type],
  ].join("\n")
  query = {
    SAS::Fields::Permissions => options[:permissions],
    SAS::Fields::Version => SAS::Version,
    SAS::Fields::Expiry => options[:expiry],
    SAS::Fields::Resource => SAS::Resources::Blob,
    SAS::Fields::Disposition => options[:content_disposition],
    SAS::Fields::Type => options[:content_type],
    SAS::Fields::Signature => sign(to_sign),
  }.reject { |_, value| value.nil? }
  URI.encode_www_form(**query)
end