class OpenID::Server::Encoder

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.

Public Instance Methods

encode(response) click to toggle source

Encode a response to a WebResponse.

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

# 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