Class: OpenID::Server::Encoder

Inherits:
Object
  • Object
show all
Defined in:
lib/openid/server.rb

Overview

I encode responses in to WebResponses.

If you don’t like WebResponses, you can do your own handling of OpenIDResponses with OpenIDResponse.whichEncoding, OpenIDResponse.encodeToURL, and OpenIDResponse.encodeToKVForm.

Direct Known Subclasses

SigningEncoder

Constant Summary collapse

@@responseFactory =
WebResponse

Instance Method Summary collapse

Instance Method Details

#encode(response) ⇒ Object

Encode a response to a WebResponse.

Raises EncodingError when I can’t figure out how to encode this message.



1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
# File 'lib/openid/server.rb', line 1153

def encode(response)
  encode_as = response.which_encoding()
  if encode_as == ENCODE_KVFORM
    wr = @@responseFactory.new(HTTP_OK, nil,
                               response.encode_to_kvform())
    if response.is_a?(Exception)
      wr.code = HTTP_ERROR
    end
  elsif encode_as == ENCODE_URL
    location = response.encode_to_url()
    wr = @@responseFactory.new(HTTP_REDIRECT,
                               {'location' => location})
  elsif encode_as == ENCODE_HTML_FORM
    wr = @@responseFactory.new(HTTP_OK, nil,
                               response.to_form_markup())
  else
    # Can't encode this to a protocol message.  You should
    # probably render it to HTML and show it to the user.
    raise EncodingError.new(response)
  end

  return wr
end