Class: XMLRPC::Base64

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/xmlrpc/base64.rb

Overview

This class is necessary for ‘xmlrpc4r’ to determine that a string should be transmitted base64-encoded and not as a raw-string.

You can use XMLRPC::Base64 on the client and server-side as a parameter and/or return-value.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(str, state = :dec) ⇒ Base64

Creates a new XMLRPC::Base64 instance with string str as the internal string. When state is :dec it assumes that the string str is not in base64 format (perhaps already decoded), otherwise if state is :enc it decodes str and stores it as the internal string.



23
24
25
26
27
28
29
30
31
32
# File 'lib/xmlrpc/base64.rb', line 23

def initialize(str, state = :dec)
  case state
  when :enc
    @str = Base64.decode(str)
  when :dec
    @str = str
  else
    raise ArgumentError, "wrong argument; either :enc or :dec"
  end
end

Class Method Details

.decode(str) ⇒ Object

Decodes string str with base64 and returns that value.



51
52
53
# File 'lib/xmlrpc/base64.rb', line 51

def Base64.decode(str)
  str.gsub(/\s+/, "").unpack("m")[0]
end

.encode(str) ⇒ Object

Encodes string str with base64 and returns that value.



56
57
58
# File 'lib/xmlrpc/base64.rb', line 56

def Base64.encode(str)
  [str].pack("m")
end

Instance Method Details

#<=>(other) ⇒ Object

Compare two base64 values, based on decoded string



45
46
47
48
# File 'lib/xmlrpc/base64.rb', line 45

def <=>(other)
  return nil unless other.is_a?(self.class)
  decoded <=> other.decoded
end

#decodedObject

Returns the decoded internal string.



35
36
37
# File 'lib/xmlrpc/base64.rb', line 35

def decoded
  @str
end

#encodedObject

Returns the base64 encoded internal string.



40
41
42
# File 'lib/xmlrpc/base64.rb', line 40

def encoded
  Base64.encode(@str)
end