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.



1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
# File 'lib/openid/server.rb', line 1129

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