Sha256: e47fe2ba55d312b9a38797ceb7840c709e82bd806c516b7440e02ff6b63e2703

Contents?: true

Size: 1.15 KB

Versions: 3

Compression:

Stored size: 1.15 KB

Contents

module Rack
  module OAuth2
    module Server
      class Authorization
        class Code < Abstract::Handler

          def call(env)
            @request  = Request.new(env)
            @response = Response.new(request)
            super
          end

          class Request < Authorization::Request
            def initialize(env)
              super
              @response_type = 'code'
            end
          end

          class Response < Authorization::Response
            attr_accessor :code

            def required_params
              super + [:code]
            end

            def finish
              if approved?
                params = {
                  :code => code,
                  :state => state
                }.delete_if do |key, value|
                  value.blank?
                end
                redirect_uri.query = if redirect_uri.query
                  [redirect_uri.query, params.to_query].join('&')
                else
                  params.to_query
                end
                redirect redirect_uri.to_s
              end
              super
            end
          end

        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rack-oauth2-0.0.6 lib/rack/oauth2/server/authorization/code.rb
rack-oauth2-0.0.5 lib/rack/oauth2/server/authorization/code.rb
rack-oauth2-0.0.4 lib/rack/oauth2/server/authorization/code.rb