Sha256: fdca24979f6b6741edbcd91faec6bd7d76e306926869b737b4c344c8151b88f6

Contents?: true

Size: 794 Bytes

Versions: 5

Compression:

Stored size: 794 Bytes

Contents

require 'base64'

module Cryptor
  # Encode and parse strings in "URL-safe" Base64 format
  module Encoding
    module_function

    # Encode a string in unpadded URL-safe Base64
    #
    # @param string [String] arbitrary string to be encoded
    # @return [String] URL-safe Base64 encoded string (sans '=' padding)
    def encode(string)
      Base64.urlsafe_encode64(string).sub(/=*$/, '')
    end

    # Decode an unpadded URL-safe Base64 string
    #
    # @param string [String] URL-safe Base64 string to be decoded (sans '=' padding)
    # @return [String] decoded string
    def decode(string)
      padding_size  = string.bytesize % 4
      padded_string =  padding_size > 0 ? string + '=' * (4 - padding_size) : string

      Base64.urlsafe_decode64(padded_string)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
cryptor-1.1.1 lib/cryptor/encoding.rb
cryptor-1.1.0 lib/cryptor/encoding.rb
cryptor-1.0.0 lib/cryptor/encoding.rb
cryptor-0.0.2 lib/cryptor/encoding.rb
cryptor-0.0.1 lib/cryptor/encoding.rb