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