Module: Saro::Dat::Util

Defined in:
lib/saro/dat/util.rb

Class Method Summary collapse

Class Method Details

.decode_base64_url(s) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/saro/dat/util.rb', line 23

def decode_base64_url(s)
  return "".b if s.nil?
  if s.is_a?(String)
    return "".b if s.empty?
  end
  
  # More robust way for older Ruby
  s = s.to_s.tr('-_', '+/')
  rem = s.bytesize % 4
  s += ("=" * (4 - rem)) if rem > 0

  Base64.decode64(s).b
end

.decode_base64_url_str(s) ⇒ Object



37
38
39
# File 'lib/saro/dat/util.rb', line 37

def decode_base64_url_str(s)
  decode_base64_url(s).force_encoding('utf-8')
end

.encode_base64_url(s) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/saro/dat/util.rb', line 10

def encode_base64_url(s)
  return "".b if s.nil?
  if s.is_a?(String)
    return "".b if s.empty?
    s = s.encode('utf-8') unless s.encoding == Encoding::BINARY
  end
  Base64.urlsafe_encode64(s, padding: false).b
end

.encode_base64_url_str(s) ⇒ Object



19
20
21
# File 'lib/saro/dat/util.rb', line 19

def encode_base64_url_str(s)
  encode_base64_url(s).force_encoding('ascii')
end