main
 1# frozen_string_literal: true
 2
 3module Saml
 4  module Kit
 5    module Builders
 6      # {include:file:lib/saml/kit/builders/templates/logout_response.builder}
 7      # {include:file:spec/saml/kit/builders/logout_response_spec.rb}
 8      class LogoutResponse
 9        include XmlTemplatable
10        attr_accessor :id, :issuer, :version, :status_code, :now, :destination
11        attr_reader :request
12        attr_reader :configuration
13
14        def initialize(request, configuration: Saml::Kit.configuration)
15          @configuration = configuration
16          @id = ::Xml::Kit::Id.generate
17          @issuer = configuration.entity_id
18          @now = Time.now.utc
19          @request = request
20          @status_code = Namespaces::SUCCESS
21          @version = '2.0'
22        end
23
24        def build
25          Saml::Kit::LogoutResponse.new(to_xml, request_id: request.id)
26        end
27
28        private
29
30        def logout_response_options
31          {
32            xmlns: Namespaces::PROTOCOL,
33            ID: id,
34            Version: version,
35            IssueInstant: now.utc.iso8601,
36            Destination: destination,
37            InResponseTo: request.id,
38          }
39        end
40      end
41    end
42  end
43end