Module: DataUri

Defined in:
lib/calldata.rb

Constant Summary collapse

REGEX =
%r{
  \Adata:
  (?<mediatype>
    (?<mimetype> .+? / .+? )?
    (?<parameters> (?: ; .+? = .+? )* )
  )?
  (?<extension>;base64)?
  ,
  (?<data>.*)\z
}x

Class Method Summary collapse

Class Method Details

._parse(str) ⇒ Object



98
# File 'lib/calldata.rb', line 98

def self._parse( str ) REGEX.match( str ); end

.parse(str) ⇒ Object



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/calldata.rb', line 100

def self.parse( str )
    m = _parse( str ) 
  
    if m
      ## 1) return mediatype (mimetype PLUS optional parameters)

      ## 2) return data (base64 decoded or not)

  
      mediatype = m[:mediatype]  
      data      = if m[:extension]   ## assume base64 encoded

                     Base64.strict_decode64(m[:data])
                  else
                     m[:data]
                  end
      [mediatype, data]
    else
       raise ArgumentError, "invalid datauri - cannot match regex; sorry"
    end
end

.valid?(str) ⇒ Boolean Also known as: is_valid?

Returns:

  • (Boolean)


120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/calldata.rb', line 120

def self.valid?( str )
  m = _parse( str )
  if m 
    if m[:extension]   ## assume base64

        begin
          Base64.strict_decode64(m[:data])
          true
        rescue ArgumentError
          false
        end
      else
        true
      end
  else
     false
  end
end